STM32 开发常见问题汇总
一,STM32_Usart 串口异常
四个错误检测标志:
- 溢出错误
- 噪声检测
- 帧错误
- 奇偶校验错误
十个具有标志位的中断源:
- CTS 变化
- LIN 停止符号检测
- 发送数据寄存器为空
- 发送完成
- 接收数据寄存器已满
- 接收到线路空闲
- 溢出错误
- 帧错误
- 噪声错误
- 奇偶校验错误
1. Usart中断事件
2. Usart状态寄存器
3. Usart问题解决
3.1 什么是ORE中断?为什么会产生?
ORE标志位在USART_SR寄存器,但值得注意的是,当我们打开串口接收中断时,同时也就打开了ORE中断。
(2)如何解决?
ORE中断只能使用USART_GetFlagStatus(USART1, USART_FLAG_ORE) 读到
(没有使能USART_IT_ERR中断时)
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)== SET)//程序中断过多,主机的发送速度又快,很容易会造成溢出错误
{
USART_ClearFlag(USART1, USART_FLAG_ORE); //清除溢出中断
USART_ReceiveData(USART1);//必须要读,不然清除不了
}