STM32
直播中

胖子的逆袭

12年用户 1092经验值
私信 关注
[问答]

接收移位寄存器无法接数据导致串口溢出并死机的原因是什么

接收移位寄存器无法接数据导致串口溢出并死机的原因是什么?如何去解决?

回帖(1)

付华一

2021-12-9 14:04:54
串口溢出后,因为接收移位寄存器不会把接收到的数据放到接收寄存器中,则RXNE/RXFNE不会再置位,不能再接收,表现为串口死机















__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE_RXFNE(USART_TypeDef *USARTx)
{
  return ((READ_BIT(USARTx->ISR, USART_ISR_RXNE_RXFNE) == (USART_ISR_RXNE_RXFNE)) ? 1UL : 0UL);
}


在串口初始化之后,再加上以下代码,关闭串口溢出,解决问题
__HAL_UART_DISABLE(huart);
CLEAR_BIT(huart->Instance->CR3, USART_CR3_OVRDIS);
__HAL_UART_ENABLE(huart);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分