• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 基于嵌入式NiosⅡ软核的串口直接读写寄存器方式编程

基于嵌入式NiosⅡ软核的串口直接读写寄存器方式编程

录入:edatop.com     点击:

2 串口直接读写寄存器方式编程

2.1 串口初始化

NiosⅡ的串口编程有多种方式,比较多的是采用标准C语言写法,占用程序空间比较大。NiosⅡ处理器的启动可采用2种方式:自动初始化和用户自定义初始化。ANSI C标准定义应用程序可以通过调用main()来开始执行。在调用main()之前,应用程序假定运行环境和所有的服务系统都被初始化并准备运行。初始化可以被硬件抽象层(HAL)系统库自动执行。程序员不需要考虑系统的输出设备以及如何初始化每一个外设,HAL会自动初始化整个系统。

另外,ANSI C标准也提供了一个可变的入口点程序,以避免自动初始化。ANSI C标准还定义程序员能手动初始化任何所用的硬件。alt_ main()函数提供了一个独立式的编程环境,能够完全控制系统的初始化。独立式编程环境可以使程序员手动编写初始化系统的代码。

HAL提供的系统初始化代码按以下启动顺序运行:

(1)启动指令和数据高速缓冲存储器;

  (2)配置堆栈;

  (3)配置全局指针;

  (4)通过链接器提供的_bss_start和_bss_end来零初始化BSS层,_bss_start和_bss_end是开始和结束BSS的命令;

  (5)如果当前系统没有启动下载器,就复制.rwdata,.rodata或者剩下的部分到RAM;

  (6)调用alt_main()。

在NiosⅡIDE工程中,只需简单定义alt_main()就可以实现用户的启动顺序,而且能够选择HAL的服务程序。如果应用程序需要一个alt_ main()入口点程序,可以复制默认的执行作为开始点,根据要求来定制它。

使用独立式编程环境会增加NiosⅡ程序编写的复杂性。独立式编程环境的主要作用在于减小代码量,但要使用这种方法,需要对NiosⅡ处理器的外设和驱动编写都非常熟悉才行。在NiosⅡIDE中也可以通过某些选项来减小HAL系统库容量,从而达到减小代码量的目的,比使用独立式编程环境容易得多。

串口部分程序初始化代码如下:

//串口中断初始化

2.2 串口收发通信程序

串口的收发可采用查询和中断方式,中断方式要更好一些。

查询方式发送子程序代码如下:

查询方式接收子程序代码如下:

作者:李 锐 来源:现代电子技术

上一篇:中兴通讯IP RAN综合解决方案
下一篇:基于FPGA的数字脉冲压缩系统实现

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图