//初学stm32,好多都不清除,望各位帮忙
//在进行串口处理程序(Serialport_3_Dataanalysis();)中,再次接收数据,程序卡住,怎么解决??
uint8_t usart3_rxBuf[21]={0};
Rec_Data LORA_Rec_Data;
uint8_t rxCompleted = RESET;
uint8_t RecData_Flag = 0;
void on_UART_IDLE( UART_HandleTypeDef *huart )
{
if(__HAL_UART_GET_FLAG( &huart3,UART_FLAG_IDLE ) == RESET)
return;
__HAL_UART_CLEAR_IDLEFLAG( &huart3 );
__HAL_UART_DISABLE_IT( &huart3 ,UART_IT_IDLE );
if(rxCompleted)
{
LORA_Rec_Data.recount = 0;
RecData_Flag = 0;
Serialport_3_Dataanalysis(); // 串口处理程序!!!!!!!!!!!!!!!!
rxCompleted = RESET; //
for(uint8_t x=0;x<21;x++)
{
usart3_rxBuf[x]=0;
}
HAL_UART_Receive_IT( &huart3,usart3_rxBuf,21);
}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart ->Instance == USART3) //
{
rxCompleted = SET ;
for(uint16_t i=0;i<21;i++)
LORA_Rec_Data.Recbuf[LORA_Rec_Data.recount++] = usart3_rxBuf[i] ;
__HAL_UART_ENABLE_IT( &huart3 ,UART_IT_IDLE);
}
}
看不清代码
但你一会关HUART3的中断一会又打开,不是好习惯也没必要