//串口6中断服务程序
代码是仿照串口1的程序该来的,测试时串口接收数据比较多时,就容易导致这个bug,一直进入串口接收中断,if条件一直满足,即使串口6的硬件连接都断开了,依然始终进入串口接收中断
串口1有时也会出现这个问题,一直进入串口接收中断,程序死在这里,不能执行其他的操作,也不进入hardfault。
请问各位大神,有遇到过这个问题吗?有什么解决方法呢?
void USART6_IRQHandler(void)
{
u8 Res;
u8 flag;
#if SYSTEM_SUPPORT_OS //使用OS
OSIntEnter();
#endif
if((__HAL_UART_GET_FLAG(&UART6_Handler,UART_FLAG_RXNE)!=RESET))
{
HAL_UART_Receive(&UART6_Handler,&Res,1,1000);
usart6_rec_buf[wk2114_read_len++]=Res;
}
HAL_UART_IRQHandler(&UART6_Handler);
#if SYSTEM_SUPPORT_OS //使用OS
OSIntExit();
#endif
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在实际调试时发现,程序并没有停在HAL_UART_Receive这里,程序是一直在运行的,一直进入中断,if条件一直满足。
原子的源码程序就是推荐这种写法的。
一周热门 更多>