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

STM32G070串口卡死问题

[复制链接]
hwzaw88 提问时间:2023-2-14 09:26 / 未解决

mcu:STM32G070RB,驱动库:hal版本1.6.1
目前会遇到串口2与外部芯片的通讯异常,异常表现为串口2不能收发数据了
串口2的配置方式是CubeMX配置的
接收数据方法:HAL_UART_Receive_IT(&huart2,&Uart2RX_Data,1);//中断方式,1字节一次获取数据
发送数据方法:HAL_UART_Transmit_IT(&huart2,u8_TxBuf,len);

我已经在中断代码中增加了if( HAL_UART_Receive_IT(&huart2, &Uart2RX_Data, 1) != HAL_OK),来判断是否开启中断完成,并且记录下来,再进行串口初始化(代码不在中断中),代码如下
huart2.Lock = HAL_UNLOCKED;
MX_USART2_UART_Init();//重新初始化串口
HAL_UART_Receive_IT(&huart2,&Uart2RX_Data,1);//继续接收数据


请教一下,如何才能保证G0单片机的 串口卡死/无法收发的情况不出现或能够解决串口异常
串口崩溃快烦死了,一直解决不了,而且很难复现。

收藏 评论3 发布时间:2023-2-14 09:26

举报

3个回答
废鱼 回答时间:2023-2-14 15:23:47

出现这个问题应是串口数据处理不及时,导致产生了溢出。需要重新初始化串口进行处理。一般重新开接收中断是在回调函数中执行。

知足- 回答时间:2023-2-15 08:30:09

image.png不知道你是怎么处理的,反正一般在回调函数中处理数据并重新开启接收,我这在F1和F4上貌似没见串口卡死过

butterflyspring 回答时间:2023-2-15 09:42:29

可以用串口工具模拟通讯。如果低速率情况可以,高速率不行,那多半跟处理速度方式有关。

如果低速也不行,多半是处理方式原理不合适,调整一下即可。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版