我正在使用与 xbee 连接的 STM32f4 发现板来接收来自远程温度传感器的温度数据。使用的代码是 CMIS UART 示例代码。我将接收数据包数据,一次 1 个字节。换句话说,只要接收到每个字节,就会调用 UART 接收中断。一旦我得到完整的数据包,我将复制温度数据。我的 UART 回调函数可以正常工作。但是几个小时后,UART接收中断停止工作,UART无法接收任何东西。但是 UART 传输仍然有效。我正在使用波特率为 115200 的 UART1。我已将 UART 中断优先级设置为 0,并且没有其他中断共享此优先级。所有其他中断优先级均低于 UART。谁能告诉我为什么UART中断停止触发?
#define PACKET_DELIMETER 0x7E
uint8_t g_frame_ok=0; //flag to indicate complete packet received
uint8_t g_index_of_aoBuf=0; //Index of receive buffer
uint8_t g_aoBuf_of_xbee[100]={0};//Receive Buffer
uint8_t r_byte=0; //Receiving byte
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *allUartHandle)
{
__HAL_UART_FLUSH_DRREGISTER(allUartHandle);
if(HAL_UART_Receive_IT(allUartHandle, (uint8_t *)&r_byte, 1) == HAL_OK) //Interrupt occurs when each byte arrives
{
if(r_byte==PACKET_DELIMETER)
{
//start receiving packet
}
if( g_index_of_aoBuf>=g_aoBuf_of_xbee[2]+4)
{
g_frame_ok=1;
BSP_LED_On(LED4);
}
}
}