关于LIN发送数据一直进入接收中断问题

在调试GD32单片机的汽车氛围灯程序时,遇到RGB灯不亮问题。通过排查发现单片机持续接收中断,经检查发现需在串口接收函数中加入判断ORE溢出标志位,解决后中断不再触发,程序恢复正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所用设备是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值