你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【MCU实战经验】+为USART建立一个FIFO  

[复制链接]
lovelydonkey-40 发布时间:2014-4-18 00:52
        每次使用串口通信的时候,碰到设置串口通信的波特率时就在想,USART通信速度太慢,占用了太多的CPU时间。如设置波特率为9600时,发送一个字节,8位需要的时间将近1ms,如果采用等待的方式,CPU非常浪费,尤其是在连续发送一段数据的时候,CPU就完全停滞不能干任何其他的东西。于是就萌生了为USART建立一个FIFO缓存区,当缓存区非空时,自动调用串口发送中断将数据发送出去。这样CPU就能从等待中解放出来做其他事情。
        算法思路:模仿ST官方例程USB建立缓存区的方法,分配一个缓存区,大小由USART_Tx_DATA_SIZE定义,具体值由应用决定。
下面给出几个主要参数的说明: 
uint8_t  USART_Tx_Buffer[USART_Tx_DATA_SIZE];//分配缓存区
uint8_t  USART_Tx_flag = 0;//标记缓存区是否有数据
uint32_t USART_Tx_ptr_in  = 0;//发送队列尾指针
uint32_t USART_Tx_ptr_out = 0;//发送队列头指针,即将被发送的数据地址
uint32_t USART_Tx_length  = 0;//发送区为发送的数据长度
         经过这样分配之后,通过串口发送数据变成了向缓存区队列写入数据,中断函数完成数据的发送。除执行中断函数外,其他时间,CPU可以干任何其他事情。这就解决了发送串口数据占用时间过长的问题。
         源代码在附件中,使用的MCU是stm32f103vct6。实际使用过程中,其稳定性还是挺高的,只是会频繁的产生中断。其中的不足是,当工程中有USB bulk通信和串口一起通信时,USB中断会干扰串口,导致串口乱码,具体是怎么导致的未研究。有兴趣的大虾可以研究下。
         本人学生一枚,经济实力有限,又非常想学f4,望斑斑沐紫大姐垂青。
         
 
 

STM32VC_USART_FIFO.rar

下载

270.23 KB, 下载次数: 1346

收藏 3 评论41 发布时间:2014-4-18 00:52

举报

41个回答
weixuan58-30589 回答时间:2014-4-18 10:11:12

RE:【MCU实战经验】+为USART建立一个FIFO

很好的办法!!!
Volcanoscar 回答时间:2014-4-19 18:30:55

回复:【MCU实战经验】+为USART建立一个FIFO

 
dsdsadsa 回答时间:2014-4-19 18:34:03

RE:【MCU实战经验】+为USART建立一个FIFO

十分有同感的啊,谢谢楼主分享
xiaoyzi 回答时间:2014-6-3 16:03:36

RE:【MCU实战经验】+为USART建立一个FIFO

确实很有想法,看看
bjybjy 回答时间:2014-6-18 17:19:29

RE:【MCU实战经验】+为USART建立一个FIFO

WANGMING02YSP 回答时间:2014-6-23 09:29:04

RE:【MCU实战经验】+为USART建立一个FIFO

好东西啊,谢谢分享了 啊
STwqq 回答时间:2014-8-14 13:32:39

RE:【MCU实战经验】+为USART建立一个FIFO

学习下FIFO,的用法
自由飞 回答时间:2014-8-17 10:33:55

回复:【MCU实战经验】+为USART建立一个FIFO

好想法啊
liu568chen 回答时间:2014-8-17 18:27:32

RE:【MCU实战经验】+为USART建立一个FIFO

看看!!!!!!!!!!!!!!!
12345下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版