中斷模式發(fā)送主要是監(jiān)控和響應TXE和TC中斷.如下圖所示.
TXE=1表示數(shù)據(jù)寄存器沒滿,可以寫入1個字節(jié),寫入后TXE由硬件清零.所以不需要軟件進行清零操作.
當所有字節(jié)都寫入完畢后,此時TXE=1,等待最后一個字節(jié)發(fā)送完畢,此時TC由硬件置1,表明所有數(shù)據(jù)都發(fā)送完畢.TC需要軟件清零.
發(fā)送流程為:
1.
主程序
:向TDR寫入第一個字節(jié),同時開啟TXE中斷.第一個字節(jié)發(fā)送完畢后,TXE置1,引起中斷.
2.
USARTx_IRQHandler
調(diào)用TXE_Callback
.3.
TXE_Callback
:寫入下一個字節(jié).過程2-3往復進行,直到要發(fā)送最后一個字節(jié),這個判斷放在
TXE_Callback
中.4.寫入最后一個字節(jié),同時開啟TC中斷,禁用TXE中斷.該操作也在
TXE_Callback
中執(zhí)行.最后一個字節(jié)發(fā)送完畢,TC置1,引起中斷.
5.
USARTx_IRQHandler
調(diào)用TC_Callback
,清零TC標志位.6.
TC_Callback
:傳輸完成,禁用TC中斷,并進行各項標志和計數(shù)重置操作.