所用设备是GD32,添加外围LIN收发器。
正在调试汽车氛围灯程序,板子上LIN数据正常发送,但RGB不亮,用LIN软件发送同样的数据发现RGB正常点亮,起初以为是单片机发送数据有问题,连接LIN设备在上位机观察发现发送数据正常,排查了一天多,最后在DeBug中意外发现,单片机一直在进入接收中断,百思不得其解,将数据透传(可理解为将一条LIN线剪断,用单片机重新连接起来)功能注释后发现正常点亮,但是透传功能肯定是需要的,最后查找资料发现,在串口接收里面加上判断ORE溢出标志位后程序正常,此时再进入DeBug发现接收中断不再进入。
将代码贴出
__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) != RESET
,这是HAL库下的代码,标准库应该是
USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET
。