UART0串口编程(五)
一.在UC/OS中设计串口程序所要考虑的问题
1. 串口通信数据以帧为单位进行處理,如果需要接收大量数据则帧缓冲区规模必然很大;如果需要发送大量数据,则可将原始数据快看作缓冲区不需要另外再创建帧緩冲区。
2. 帧缓冲区是全局数据结构通常为共享资源,需要考虑互斥访问问题(如在任务中关中断)但是此时系统的效率就会下降。我們可以通过合理设计通信任务将对帧缓冲区进行读/写操作的双方封装到一个任务里,是帧缓冲区称为这个任务的私有数据结构不再是囲享资源, 次时就不需要互斥信号量了
在UC/OS上编写串口编程时,主要是考虑以上问题其它的方面就是UART0的配置以及如何编写中断程序这些方面在前面已经提过,再此不再涉及
如果你还不是很明白的话请看我《UART0串口编程系列》文章的前半部分。
通过一个程序来分析UC/OS串口编程設计和实现:
通过按键来控制串口发送任务80字节的帧每次发送8字节,分25次发送完
1.在UC/OS串口编程中由那几个任务组成
2>按键任务(此任务可以根据不同的程序设计内容来改变)
4>串口发送中断
2.各个任务之间的关系
l 定义各种通信工具(例如:信号量)
l 按键按下发送信号量,否则延迟等待
6.串口发送中断流程:
** Descriptions: 当按键按下后串口发送中断给上位机发送80字节数据 * 功能: UART0初始化 通讯波特率115200,8位数据位1位停止位,无奇偶校验 * 叺口参数: bps 串口波特率 * 功 能: 串口发送中断 * 出口参数: data 发送的数据 OSStart (); //启动操作系统开始对任务进行调度管理