久芯网

STM32G070串口卡死问题

avatar hwzaw88 提问时间: 2023-07-08 13:05:18 / 未解决

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单片机的 串口卡死/无法收发的情况不出现或能够解决串口异常
串口崩溃快烦死了,一直解决不了,而且很难复现。


如需获得 STM32G070 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

3个回答
  • avatar 废鱼
    回答时间: 2023-07-08 13:30:01

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

  • avatar 知足-
    回答时间: 2023-07-08 13:46:51

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

  • avatar butterflyspring
    回答时间: 2023-07-08 14:05:10

    可以用串口工具模拟通讯。如果低速率情况可以,高速率不行,那多半跟处理速度方式有关。 如果低速也不行,多半是处理方式原理不合适,调整一下即可。

会员中心 微信客服
客服
回到顶部