打印
[STM32F1]

STM32串口空闲中断的使用

[复制链接]
785|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dspmana|  楼主 | 2024-2-27 23:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

a) 可以准确地判断出串口数据是否接收完毕,不需要额外添加定时器作数据接收完毕超时检测,不仅可以减少了TIM定时器外设 的使用,提高系统性能,而且可以增强程序的可读性(因为使用TIM定时器做超时检测时,需要在TIM定时器中断函数中添加一个 USART_RX_Over的标识符,影响了程序的可读性);

a) 在使用串口空闲中断时需要添加读DR位(数据寄存器)空闲中断变量,因为每次触发串口空闲中断时,需要读取对应USART的DR位(数据寄存器)才能清除IDLE(串口空闲空闲标志位)标志位,保证下次执行时不出错,如图下:
b) 当触发串口空闲中断时(证明串口接收数据完毕),可以添加USART_RX_Over全局变量,利于在工程文件外部判断串口数据是否接收完毕;
c) 当接收到多个数据时,需要添加记录接收数据个数USART_RX_Count变量,在进入串口空闲中断(证明串口接收数据完毕),清零该变量,避免该变量在工程文件外部清零,有效地预防忘记在文件外部将USART_RX_Count清零导致bug出现;

使用特权

评论回复
沙发
LEDyyds| | 2024-2-28 20:44 | 只看该作者
串口空闲非常实用,结合DMA处理不定长数据

使用特权

评论回复
板凳
药无尘| | 2024-2-29 11:14 | 只看该作者
使用空闲中断需要注意标志位的清除,否则容易卡死

使用特权

评论回复
地板
狄克爱老虎油| | 2024-2-29 17:55 | 只看该作者
空闲中断的标志位不是会自动清除吗

使用特权

评论回复
5
heisexingqisi| | 2024-2-29 22:11 | 只看该作者
空闲也可以中断?真是太神奇了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

2583

帖子

2

粉丝