解决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;
}
|