完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
今天写点大家常问,也是常见的关于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] |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1786 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1622 浏览 1 评论
1089 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
730 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1942浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
739浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
576浏览 3评论
599浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
561浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 23:08 , Processed in 0.950483 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号