注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
damiaa的个人空间 https://home.eeworld.com.cn/space-uid-59433.html [收藏] [复制] [分享] [RSS]
日志

【NUCLEO H533RE】之六 串口overrun错误问题解决

热度 1已有 1020 次阅读2024-8-8 15:01 |个人分类:STM32

                                            【NUCLEO H533RE】之六 串口overrun错误问题解决

 

偶然之中发现一个stm32的通用问题,就是串口接收错误死机(其实不是死机,是串口不能工作了)。

后来用其他stm32单片机,如stm32f系列也是有这个问题,特别是电路搭建的比较乱,波特率比较高就容易出现。
 
H533RE的nucleo板是很不容易发现的。
 
手上有个搭建的stm32f051板子就这样:
工作在9600 19200 38400 57600都没问题,工作在115200就有问题。
 
下图是出错的数据,接收到数据会点亮或者熄灭led。
 
因为搭建的电路干扰大,加上使用的内置时钟
 
但无论什么问题。串口不能死机。
对stm32作一番分析后,发现stm32cubied产生的代码默认的错误溢出是允许中断,而且中断需要用户自己解决。
 
这样解决方案采取如下:
1,不用的DMA接收错误是必须关闭。
2,使用的Overrun要么关闭,要么采用函数处理。
 
使用的处理函数放在main.c中处理回调函数的地方:
3,尽量把电路搞规整点,适当条件下时候外部晶体。
4,不是要求高的时候莫把波特率调得老高。

本文来自论坛,点击查看完整帖子内容。

发表评论 评论 (1 个评论)
回复 Ejack1979 2024-8-19 08:33
这应该算是用户编程和使用的不良习惯问题吧。谁能想到用户懒到连错误中断都不处理呢。

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章