天天看點

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寄存器發送完最後一個位時産生的中斷标志位。

繼續閱讀