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

【STM32小技巧】串口空闲中断的使用

[复制链接]
攻城狮Melo 发布时间:2022-10-7 19:54
今天完善了USART串口接收数据函数以及程序,在每个USART外设上都添加了串口空闲中断函数。其步骤如下:
5 Q( n: U+ u7 m2 Z) D; M, K# A' R' m, Z: x$ R
添加总线空闲中断功能的优点:
2 ?: r0 j. o& z) A- C' @. oa) 可以准确地判断出串口数据是否接收完毕,不需要额外添加定时器作数据接收完毕超时检测,不仅可以减少了TIM定时器外设 的使用,提高系统性能,而且可以增强程序的可读性(因为使用TIM定时器做超时检测时,需要在TIM定时器中断函数中添加一个 USART_RX_Over的标识符,影响了程序的可读性);
! [- |$ {% U/ ^
11.png
13.png
添加总线空闲中断功能的需要注意的地方:
' p. w% L- E1 @# E( \$ wa) 在使用串口空闲中断时需要添加读DR位(数据寄存器)空闲中断变量,因为每次触发串口空闲中断时,需要读取对应USART的DR位(数据寄存器)才能清除IDLE(串口空闲空闲标志位)标志位,保证下次执行时不出错,如图下:' N& L: E+ P+ E* m1 v. m' x" U
12.png
b) 当触发串口空闲中断时(证明串口接收数据完毕),可以添加USART_RX_Over全局变量,利于在工程文件外部判断串口数据是否接收完毕;& f7 `4 k2 {( ^) J, Q$ O+ y
c) 当接收到多个数据时,需要添加记录接收数据个数USART_RX_Count变量,在进入串口空闲中断(证明串口接收数据完毕),清零该变量,避免该变量在工程文件外部清零,有效地预防忘记在文件外部将USART_RX_Count清零导致bug出现;
6 ]1 w% |! O  B6 q6 i& e9 u, Q- K' E7 w# H

& A% T2 X! |) R& F+ j. T8 i! B) N
收藏 评论0 发布时间:2022-10-7 19:54

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版