STM32 开发常见问题汇总

一,STM32_Usart 串口异常

四个错误检测标志:

  1. 溢出错误
  2. 噪声检测
  3. 帧错误
  4. 奇偶校验错误

十个具有标志位的中断源:

  1. CTS 变化
  2. LIN 停止符号检测
  3. 发送数据寄存器为空
  4. 发送完成
  5. 接收数据寄存器已满
  6. 接收到线路空闲
  7. 溢出错误
  8. 帧错误
  9. 噪声错误
  10. 奇偶校验错误

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);//必须要读,不然清除不了
		}