当我们使用串口空闲中断可以会陷入死循环:
原因分析:HAL_UART_Receive_DMA(&huart1,ReceiveDMA,1);中的ReceiveDMA数组太小,初始化的时候可能触发空闲中断,进入USART1_IRQHandler函数里面死循环。
解决方法:1.将ReceiveDMA的数组增大 2.在使能串口空闲中断的前面加上 while(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)==RESET)
{
}即可