关于STM32串口空闲中断的问题

Posted hubertboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于STM32串口空闲中断的问题相关的知识,希望对你有一定的参考价值。

关于STM32串口空闲中断的问题

1.空闲中断是接受数据后出现一个byte的高电平(空闲)状态,就会触发空闲中断.并不是空闲就会一直中断,准确的说应该是上升沿(停止位)后一个byte,如果一直是低电平是不会触发空闲中断的(会触发break中断)。


2.关于第二点有要铺垫的三个情况,datasheet中
"当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但如果IDLEIE位被设置将产生一个中断"
"空闲符号被视为完全由\'1\'组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位\'1\'的位数也包括了停止位的位数” 空闲符号的配图后面跟这一个低电平.
有人理解为只有收到下一个数据的起始位才会触发中断,这样理解是不对的,应该是数据后有空闲了一帧就会触发.


3.清中断的方式感觉奇怪,使用函数USART_ClearITPendingBit( USART1, USART_IT_IDLE )清除不了中断的.我用的是3.5的库,查看函数说明,里面的@param参数并没有IDLE,后面的@note中,这样说:
"PE(Parity error),FE(Framing error),NE(Noise error),ORE(OverRun error) and IDLE(Idle line detected) pending bits are cleared by software sequence: a read operation to USART_SR register (USART_GetITStatus()) followed by a read operation to USART_DR register (USART_ReceiveData())."
我是通过语句"USART1->DR;"来清除IDLE中断的.

以上是关于关于STM32串口空闲中断的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于STM32空闲中断

stm32h750串口发送中断关掉

stm32 串口 中断的问题

STM32 | 串口空闲中断接收不定长数据(DMA方式)

STM32的串口空闲中断及接受数据

stm32如何启动串口中断