CH582连接了一个wifi模块,在wifi模块串口回复数据时如果出现错误的串口数据(经过逻辑分析仪看到的有错误的数据)时,CH582就会一直卡在串口接收中断里面。
case UART_II_LINE_STAT: // 线路状态错误
{
PRINT("uart_error \r\n");
UART3_CLR_RXFIFO();
UART3_GetLinSTA();
break;
}
这个怎么清除中断?
CH582连接了一个wifi模块,在wifi模块串口回复数据时如果出现错误的串口数据(经过逻辑分析仪看到的有错误的数据)时,CH582就会一直卡在串口接收中断里面。
case UART_II_LINE_STAT: // 线路状态错误
{
PRINT("uart_error \r\n");
UART3_CLR_RXFIFO();
UART3_GetLinSTA();
break;
}
这个怎么清除中断?
在线路状态错误中断里面没有做任何处理的时候一收到错误的串口数据就马上会一直卡在case UART_II_LINE_STAT: // 线路状态错误这个里面,加上一句 UART3_CLR_RXFIFO();后就不会必现,但是偶尔还是会出现,所以这个要怎么解决?
先清除标志再清除fifo的内容,就是按照你代码的方式处理。
进入线路错误中断可以打印LSR寄存器判断原因。
可能导致的原因,例如在串口进行收发时被优先级更高的中断打断,导致没有及时从FIFO取走数据导致问题。