通常,您只需要处理您专门启用的中断标志USART_ITConfig()
。
但是,如果您启用 RXNE 中断 ( USART_ITConfig(USARTx, USART_IT_RXNE)
),那么这也会启用溢出中断!所以你必须同时处理这两个问题。
USART 标志可能会造成混淆。有单独的状态标志和中断标志,它们具有相似的名称。例如:USART_IT_RXNE
和USART_FLAG_RXNE
。
此外,还有多种方法可以清除这些标志。例如,该USART_ClearITPendingBit()
函数仅适用于四个(十个)可能的标志。
以下是中断标志及其使用方法的摘要。这些特定于 STM32F105,但具有代表性:
USART_IT_TXE - “发送数据寄存器为空”
USART_IT_RXNE - “接收数据寄存器不为空”
USART_IT_TC - “传输完成”
USART_IT_CTS - “CTS 更改”
- 通过调用清除
USART_ClearITPendingBit(USARTx, USART_IT_CTS)
USART_IT_LBD - “检测到 LIN 中断”
- 通过调用清除
USART_ClearITPendingBit(USARTx, USART_IT_LBD)
USART_IT_PE - “奇偶校验错误”
- 清除者:
USART_GetITStatus(USARTx, USART_IT_PE)
其次是
USART_ReceiveData(USARTx)
USART_IT_NE - “噪音错误”
- 清除者:
USART_GetITStatus(USARTx, USART_IT_NE)
其次是
USART_ReceiveData(USARTx)
USART_IT_ORE - “溢出错误”
- 清除者:
USART_GetITStatus(USARTx, USART_IT_ORE)
其次是
USART_ReceiveData(USARTx)()
USART_IT_IDLE - “检测到空闲线路”
- 清除者:
USART_GetITStatus(USARTx, USART_IT_IDLE)
其次是
USART_ReceiveData(USARTx)()