/** * @brief This function handles USART2 global interrupt. */ void USART2_IRQHandler(void) { /* USER CODE BEGIN USART2_IRQn 0 */ #if 1 if(__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE) && __HAL_UART_GET_IT_SOURCE(&huart2, UART_IT_IDLE)) { __HAL_UART_CLEAR_IDLEFLAG(&huart2); ESP8266_RecvCallback(RECV_IDLE); } #else /* USER CODE END USART2_IRQn 0 */ HAL_UART_IRQHandler(&huart2); /* USER CODE BEGIN USART2_IRQn 1 */ #endif /* USER CODE END USART2_IRQn 1 */ }
/** * @brief This function handles USART1 global interrupt. */ void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ uint32_t tmp1, tmp2; tmp1 = __HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE); tmp2 = __HAL_UART_GET_IT_SOURCE(&huart1, UART_IT_IDLE); if((tmp1 != RESET) && (tmp2 != RESET)) { __HAL_UART_DISABLE_IT(&huart1, UART_IT_IDLE); __HAL_UART_CLEAR_IDLEFLAG(&huart1); My_HAL_UART_IdleCallback(&huart1); } /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); /* USER CODE BEGIN USART1_IRQn 1 */ /* USER CODE END USART1_IRQn 1 */ }
/** * @brief This function handles USART2 global interrupt. */ void USART2_IRQHandler(void) { /* USER CODE BEGIN USART2_IRQn 0 */ uint32_t tmp_flag = 0; tmp_flag = __HAL_UART_GET_FLAG(&huart2,UART_FLAG_IDLE); if((tmp_flag != RESET)) { __HAL_UART_CLEAR_IDLEFLAG(&huart2); huart2.Instance->ISR; //读取寄存器,清理相应标志位 huart2.Instance->TDR; //读取寄存器,清理相应标志位 HAL_UART_DMAStop(&huart2); dma_state = HAL_UART_Receive_DMA(&huart2,uart2_recv_buf,BUFFER_SIZE); } /* USER CODE END USART2_IRQn 0 */ HAL_UART_IRQHandler(&huart2); /* USER CODE BEGIN USART2_IRQn 1 */ /* USER CODE END USART2_IRQn 1 */ }
static void TM_USART_INT_ClearAllFlags(USART_TypeDef* USARTx, IRQn_Type irq) { UART_Handle.Instance = USARTx; #ifdef __HAL_UART_CLEAR_PEFLAG __HAL_UART_CLEAR_PEFLAG(&UART_Handle); #endif #ifdef __HAL_UART_CLEAR_FEFLAG __HAL_UART_CLEAR_FEFLAG(&UART_Handle); #endif #ifdef __HAL_UART_CLEAR_NEFLAG __HAL_UART_CLEAR_NEFLAG(&UART_Handle); #endif #ifdef __HAL_UART_CLEAR_OREFLAG __HAL_UART_CLEAR_OREFLAG(&UART_Handle); #endif #ifdef __HAL_UART_CLEAR_IDLEFLAG __HAL_UART_CLEAR_IDLEFLAG(&UART_Handle); #endif /* Clear IRQ bit */ HAL_NVIC_ClearPendingIRQ(irq); }