zynq ucos uart发送缓存区数据任务设计

2015-11-02 22:57 阅读 882 次 评论 0 条

在查看ucos uart bsp后发现ucos发送数据段只能为ASCII字符串形式,所以要发送自定义的二进制数据缓存区,需要自定义发送函数,倒是可以仿照bsp中的API进行编写,改变发送完毕判定的条件即可

为了便于编程与理解方便,建立uart发送任务,通过任务消息队列(task’s message queue)控制发送,当有数据发送消息时,启动发送任务。将发送缓存区定义为一个队列,uart发送任务中检查发送队列是否为空,如果不为空则一直发送,直到为空为止。这样会在uart发送任务中一直占用uart tx资源,该资源位互斥资源,所以其他程序将无法发送数据。

ucos uartpstxtask代码

UARTPS_TxQue中通过判定队列是否为空,作为发送完毕的判定。

UARTPS_TxQue函数中通过中断与信号量发送数据

使用了信号量与中断进行发送,一次可以发送64bit(FIFO的深度)。

所以uart发送函数的功能就是将需要发送的数据存入队列,然后post消息给TxTask。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:zynq ucos uart发送缓存区数据任务设计 | 起点博客
分类:应用笔记 标签:, , , ,

发表评论


表情