新闻中心

EEPW首页>嵌入式系统>设计应用> 基于嵌入式NiosⅡ软核的串口直接读写寄存器方式编程

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

作者: 时间:2010-10-02 来源:网络 收藏

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 串口收发通信程序
串口的收发可采用查询和中断方式,中断方式要更好一些。
查询方式发送子程序代码如下:




关键词:收发器

评论


相关推荐

技术专区

关闭