STM32
登录
直播中
莫联雪
7年用户
1134经验值
私信
关注
[问答]
STM32串口中断/DMA接收有哪些注意事项?
开启该帖子的消息推送
STM32
STM32
串口中断/DMA接收有哪些注意事项?
回帖
(1)
胡书琴
2021-12-16 10:33:49
今天写点大家常问,也是常见的关于UART串口的内容。这几点内容或许曾经也困惑了你很久。
1UART串口中断接收
使能UART串口中断之后,有接收到UART数据,进入中断,此时要
清除RXNE接收标志位
:
1.
通过软件向该RXNE标志位写入零来清零;
2.
通过对 USART_DR 寄存器执行读入操作将该位清零。
这里可以查看对应《参考手册》,一般我们选择第2种,通过读取UART串口数据来清零。
1.中断接收数据丢失
在UART串口中断函数中,或者更高优先级中断函数中长时间执行,导致接收丢失,所以,
请勿在中断函数中长时间执行
。
特别有些人,还在中断函数添加延时函数。实际应用中,只要不是特殊情况,比如测试某个功能可以添加延时函数,都不建议在中断函数添加延时函数。
2.ORE上溢错误
ORE上溢错误是什么意思呢? 可能很多人不了解,简单说就是:
UART接收到有数据,没有去取,但又来了数据,此时就会产生ORE上溢错误
。(请看“参考手册”)
其实,上面这种长时间在占用中断,就会导致UART接收数据上溢。
很多人没有在意这个,如果是使能了中断接收,标志位没有清除,又有ORE上溢错误的话,
程序就会不停地进入UART中断
。(大家不妨试一下,看一下是不是你代码一直在UART中断里面不停运行)。
3.使能接收中断前,先清除接收标志位
有时候,在程序初始化的时候,就会接收到数据,这个时候建议大家先清除接收标志位再使能接收中断。类似如下:
[img]https://ss.csdn.net/p?
https://mmbiz.qpic.cn/mmbiz_png/ju1DzqX8iaOmLtOHIQGE2Z2ZCsWDgbyJUfauNwuMoZUl7dpaXaMp0NNpbvyj7w6E2emq5EyHZJtm1TjVElib0IibQ/640?wx_fmt=png
[/img]
2
DMA接收串口数据 使用DMA接收串口数据,相信很多朋友都知道。这个可以理解为
使用队列,或者FIFO的形式,防止因高优先级中断而打断,导致接收数据丢失
。
但很多人都遇到过,接收不到数据,或者数据异常的情况。所以,这里同样有需要注意的地方。
1.使能UART之前,先使能DMA相关配置
这个和清除标志位一样的道理,使能UART之前,先使能DMA相关配置,防止在配置过程中有接收数据。
[img]https://ss.csdn.net/p?
https://mmbiz.qpic.cn/mmbiz_png/ju1DzqX8iaOmLtOHIQGE2Z2ZCsWDgbyJULZ902Ip***ggJRImYK3ic4tLAu42iaZxiajuNEejldFNNoDlH3Z56dtibQw/640?wx_fmt=png
[/img]
2.ORE上溢错误导致不能使用DMA接收数据
导致不能DMA接收不到数据的根源,有一种可能就是有ORE上溢错误。
若在串口初始化并使能后到 DMA 使能之前有数据来,MCU是不能接收的。如果此时数据寄存器 USART_DR 存在一个数据,再来一个数据,就会导致ORE上溢错误。
一旦产生上溢错误后,就无法再触发 DAM 请求
,及时之后再启动 DMA 也不行,无法触发 DMA 请求就无法将数据寄存器内的数据及时转移走,如此陷入死锁。这就是串口无法正常接收的原因。
所以,最后提醒大家,配置时,请一定要注意这些细节。
推荐阅读:
1.11月·月底总结
2.
CRC校验、STM32中CRC计算单元、CRC应用
3最后
若觉得文章对你有帮助,
随手点赞、分享,也是对我莫大的支持和鼓励。
扫描下面二维码、关注公众号,在底部菜单中查看更多精彩内容!
[img]https://ss.csdn.net/p?
https://mmbiz.qpic.cn/mmbiz_jpg/ju1DzqX8iaOlGrRhCDoVL02Kyd6nflVcZylcpCetcBBo69gXdbZuYZbrV4ibibEfVhYP1lclwF3hnverTEcvf3Yxg/640?wx_fmt=jpeg
[/img]
今天写点大家常问,也是常见的关于UART串口的内容。这几点内容或许曾经也困惑了你很久。
1UART串口中断接收
使能UART串口中断之后,有接收到UART数据,进入中断,此时要
清除RXNE接收标志位
:
1.
通过软件向该RXNE标志位写入零来清零;
2.
通过对 USART_DR 寄存器执行读入操作将该位清零。
这里可以查看对应《参考手册》,一般我们选择第2种,通过读取UART串口数据来清零。
1.中断接收数据丢失
在UART串口中断函数中,或者更高优先级中断函数中长时间执行,导致接收丢失,所以,
请勿在中断函数中长时间执行
。
特别有些人,还在中断函数添加延时函数。实际应用中,只要不是特殊情况,比如测试某个功能可以添加延时函数,都不建议在中断函数添加延时函数。
2.ORE上溢错误
ORE上溢错误是什么意思呢? 可能很多人不了解,简单说就是:
UART接收到有数据,没有去取,但又来了数据,此时就会产生ORE上溢错误
。(请看“参考手册”)
其实,上面这种长时间在占用中断,就会导致UART接收数据上溢。
很多人没有在意这个,如果是使能了中断接收,标志位没有清除,又有ORE上溢错误的话,
程序就会不停地进入UART中断
。(大家不妨试一下,看一下是不是你代码一直在UART中断里面不停运行)。
3.使能接收中断前,先清除接收标志位
有时候,在程序初始化的时候,就会接收到数据,这个时候建议大家先清除接收标志位再使能接收中断。类似如下:
[img]https://ss.csdn.net/p?
https://mmbiz.qpic.cn/mmbiz_png/ju1DzqX8iaOmLtOHIQGE2Z2ZCsWDgbyJUfauNwuMoZUl7dpaXaMp0NNpbvyj7w6E2emq5EyHZJtm1TjVElib0IibQ/640?wx_fmt=png
[/img]
2
DMA接收串口数据 使用DMA接收串口数据,相信很多朋友都知道。这个可以理解为
使用队列,或者FIFO的形式,防止因高优先级中断而打断,导致接收数据丢失
。
但很多人都遇到过,接收不到数据,或者数据异常的情况。所以,这里同样有需要注意的地方。
1.使能UART之前,先使能DMA相关配置
这个和清除标志位一样的道理,使能UART之前,先使能DMA相关配置,防止在配置过程中有接收数据。
[img]https://ss.csdn.net/p?
https://mmbiz.qpic.cn/mmbiz_png/ju1DzqX8iaOmLtOHIQGE2Z2ZCsWDgbyJULZ902Ip***ggJRImYK3ic4tLAu42iaZxiajuNEejldFNNoDlH3Z56dtibQw/640?wx_fmt=png
[/img]
2.ORE上溢错误导致不能使用DMA接收数据
导致不能DMA接收不到数据的根源,有一种可能就是有ORE上溢错误。
若在串口初始化并使能后到 DMA 使能之前有数据来,MCU是不能接收的。如果此时数据寄存器 USART_DR 存在一个数据,再来一个数据,就会导致ORE上溢错误。
一旦产生上溢错误后,就无法再触发 DAM 请求
,及时之后再启动 DMA 也不行,无法触发 DMA 请求就无法将数据寄存器内的数据及时转移走,如此陷入死锁。这就是串口无法正常接收的原因。
所以,最后提醒大家,配置时,请一定要注意这些细节。
推荐阅读:
1.11月·月底总结
2.
CRC校验、STM32中CRC计算单元、CRC应用
3最后
若觉得文章对你有帮助,
随手点赞、分享,也是对我莫大的支持和鼓励。
扫描下面二维码、关注公众号,在底部菜单中查看更多精彩内容!
[img]https://ss.csdn.net/p?
https://mmbiz.qpic.cn/mmbiz_jpg/ju1DzqX8iaOlGrRhCDoVL02Kyd6nflVcZylcpCetcBBo69gXdbZuYZbrV4ibibEfVhYP1lclwF3hnverTEcvf3Yxg/640?wx_fmt=jpeg
[/img]
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
请问
STM32
串口中断
/
DMA
接收有
哪些
注意事项
?
2021-11-16
912
请问一下
STM32
F407
串口
空闲
中断
+
DMA
接收有
何应用呢
2021-11-16
1211
STM32
串口
配置
注意事项
是什么?
2021-12-13
692
STM32
F4
串口
DMA
接收
需要
注意
哪些
事项
2021-12-06
1668
stm32
串口
超高波特率调试
注意事项
有哪些?
2021-12-15
1059
STM32
中断
有哪些
注意事项
?
2021-12-16
718
串口
接收
唤醒机制有哪些
注意事项
?
2021-12-09
1202
接收
STM32
串口中断
+
DMA
不定长字符
串
的方法是什么
2021-12-09
768
请问hal库如何实现
stm32
串口中断
接收
数据?
2021-12-09
1603
请问
stm32
串口中断
接收
数据被持续的外部
中断
会导致
接收
数据异常吗?
2019-03-19
3951
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分