天天看点

STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC

与STM32的发送中断相关的标志位有

USART_IT_TXE

USART_IT_TC

根据ST芯片手册的信息可知,USART在发送移位寄存器(Transmit Shift Register)前面,还有一个TDR(Transmit data register)寄存器。芯片手册注图如下:

STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC

芯片手册对TXE的描述如下,向DR寄存器写入数据即可清除TXE标志位。

TXE标志位由硬件置位,产生TXEIE中断标志位,如果开启了TXE中断,则会产生一次中断。

TXE置位,意味着TDR的数据移位到DR寄存器,并已启动发送;TDR寄存器已为空,可以发送下一字节数据到TDR寄存器,并且不会覆盖之前DR寄存器的内容。

STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC

当传输在进行时,写入DR寄存器的内容被保存到TDR寄存器,等待当前传输完成时,再将TDR寄存器的内容拷贝到DR寄存器,然后执行发送;

当传输未进行时,写入DR寄存器的内容被直接写入到DR移位寄存器,启动数据传输,并立即置TXE位;

每传输完一字节内容,如果TEX位为1,则TC位为1。并且会产生一个中断,如果设置了USART_CR1寄存器的TCIE位。

TC位清除软件顺序:

1.读USART_SR寄存器;

2.写USART_DR寄存器。

STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC

总结

USART_IT_TXE

是在TDR寄存器为空时产生的中断标志位;

USART_IT_TC

是在DR寄存器发送完最后一个位时产生的中断标志位。

继续阅读