通常,您只需要处理已通过专门启用的中断标志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)()