mokongking

stm32cubeide,串口+dma接收不定长数据

void USART2_IRQHandler(void)
{
  /* USER CODE BEGIN USART2_IRQn 0 */
//    __HAL_UART_DISABLE_IT(&huart2,UART_IT_RXNE);                                       /* 关闭UART2接收不空中断 */
    __HAL_UART_ENABLE_IT(&huart2,UART_IT_IDLE);                                        /* 打开UART2空闲中断 */
     if(__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE))
     {
          uart_num = WifiUart2Object;
         __HAL_UART_CLEAR_IDLEFLAG(ObjectUart[WifiUart2Object].Uart);
         READ_REG(ObjectUart[WifiUart2Object].Uart->Instance->DR);                                 /* 清UART1空闲断源 */
         READ_REG(ObjectUart[WifiUart2Object].Uart->Instance->SR);
         HAL_UART_DMAStop(ObjectUart[WifiUart2Object].Uart);//处理完重置
         HAL_UART_IDIE_IRQHandler(&huart2);
     }
  /* USER CODE END USART2_IRQn 0 */
  HAL_UART_IRQHandler(&huart2);这个是ide代码自动生成,空闲中断一定要在这个函数之前这个函数内部会清空标志位。
  /* USER CODE BEGIN USART2_IRQn 1 */


  /* USER CODE END USART2_IRQn 1 */
}

 

posted on 2025-06-03 15:28  虎啸岳林  阅读(67)  评论(0)    收藏  举报

导航