解决STM32F103系列 HAL库 DMA串口收发 频繁出现帧错误 (UART_FLAG_FE ,UART_FLAG_NE)的问题
HAL库 踩坑记录 解决STM32F103系列 HAL库 DMA串口收发 频繁出现帧错误 (UART_FLAG_FE ,UART_FLAG_NE)的问题 直接上代码 - /**************************************************************************
- * [url=home.php?mod=space&uid=247401]@brief[/url] 串口错误回调函数
- * @retval
- **************************************************************************/
- void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
- {
- if((__HAL_UART_GET_FLAG(huart, UART_FLAG_PE))!=RESET)
- {
- // HAL_UART_Transmit_DMA(&huart1, (uint8_t *)"00000", 5);
- __HAL_UNLOCK(huart);
- __HAL_UART_CLEAR_PEFLAG(huart);
- }
- if((__HAL_UART_GET_FLAG(huart, UART_FLAG_FE))!=RESET)
- {
- // HAL_UART_Transmit_DMA(&huart1, (uint8_t *)"00001", 5);
- __HAL_UNLOCK(huart);
- __HAL_UART_CLEAR_FEFLAG(huart);
- }
-
- if((__HAL_UART_GET_FLAG(huart, UART_FLAG_NE))!=RESET)
- {
- // HAL_UART_Transmit_DMA(&huart1, (uint8_t *)"00002", 5);
- __HAL_UNLOCK(huart);
- __HAL_UART_CLEAR_NEFLAG(huart);
- }
-
- if((__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE))!=RESET)
- {
- // HAL_UART_Transmit_DMA(&huart1, (uint8_t *)"00003", 5);
- __HAL_UNLOCK(huart);
- __HAL_UART_CLEAR_OREFLAG(huart);
- }
-
- // 错误标志位置
- Uart_Error_Flag = 1;
- }
|