搜索
查看: 1724|回复: 0

[原创] 【STM32G491试用】05+MDK+LPuart的空闲中断接收

[复制链接]

该用户从未签到

50

主题

369

帖子

0

蝴蝶豆

金牌会员

最后登录
2021-4-1
发表于 2021-3-27 23:38:53 | 显示全部楼层 |阅读模式
       STM32用CubeMx生成的HAL库效率很低,利用HAL自带的串口中断在接收大量数据时很容易出现数据丢失。一般来说,串口所接受的数据长度可能是不固定的。然而在一串数据的连续接收中,串口接收中断内实现的程序应尽可能短小,避免因打断接收过程而产生数据丢失。使用空闲中断实现效率的大幅提升,并且避免数据丢失。
     当每接收到一个字符时都会置位UART_IT_RXNE,此时我们将字符存到自定义的数组Buffer中,然后将UART_IT_RXNE清零。当一串字符接收结束后串口进入空闲状态,UART_IT_IDLE则会置位,此时我们将接收到的所有数据进行处理,并将UART_IT_IDLE清零。
      发送端每次都发送一串数据,发送这一串数据的各字符之间没有空闲时间,而每串数据结束到接收到下一串数据是有一定空闲时间的。
因此,接收端只有在接收完一串数据之后才能检测到空闲,从而触发空闲中断。该方法直接利用数据串之间的空闲来识别数据串的尾部,
而非使用如’\n’等符号表示数据结尾,也将提高处理的效率。
QQ浏览器截图20210327233431.jpg
最后,总结,HAL库不好用。
1. CubeMX生成的初始化代码不全,明明NVIC中断都配了,UART接收中断缺没打开,后来还是手动添加的,有几次OK了,后来又3进去不中断了。
2.也不知道哪里有毛病,HAL库很庞大,排查需要深入研究hal库,需要花时间,总的来说,ST本想给客户省时间,殊不知还是多花了时间的。



回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-20 20:39 , Processed in 1.148139 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表