USART是STM32內(nèi)部集成的硬件外設,可以根據(jù)數(shù)據(jù)寄存器的一個字節(jié)數(shù)據(jù)自動生成數(shù)據(jù)幀時序,從TX引腳發(fā)送出去,也可以自動接收RX引腳的數(shù)據(jù)幀時序,拼接成一個字節(jié)數(shù)據(jù),存放在數(shù)據(jù)寄存器里。
當配置好USART的電路之后,直接讀取數(shù)據(jù)寄存器,就可以自動發(fā)送數(shù)據(jù)和接收數(shù)據(jù)了。在發(fā)送和接收的模塊有4個重要的寄存器
發(fā)送數(shù)據(jù)寄存器TDR
發(fā)送移位寄存器,把一個字節(jié)的數(shù)據(jù)一位一位的移出去
接收數(shù)據(jù)寄存器RDR
接收移位寄存器,把一個字節(jié)的數(shù)據(jù)
下方為串口的發(fā)送和接收圖解:

串口發(fā)送
在配置串口的各個參數(shù)時,可以選擇發(fā)送數(shù)據(jù)幀的數(shù)據(jù)位的大小,可選8位或9位。
串口發(fā)送數(shù)據(jù)實際上就是對發(fā)送數(shù)據(jù)寄存器TDR進行寫操作。
- 當串口發(fā)送數(shù)據(jù)時,會檢測發(fā)送移位寄存器是不是有數(shù)據(jù)正在移位,如果沒有移位,那么這個數(shù)據(jù)就會立刻轉(zhuǎn)移到發(fā)送移位寄存器里。準備發(fā)送。
2.當數(shù)據(jù)移動到移位寄存器時,會產(chǎn)生一個TXE發(fā)送寄存器空標志位,該位描述如下。當TXE被置1,那么就可以在TDR寫入下一個數(shù)據(jù)了。即發(fā)送下一個數(shù)據(jù)。

- 發(fā)送移位寄存器在發(fā)送器控制的控制下,向右移位,一位一位的把數(shù)據(jù)傳輸?shù)絋X引腳。

- 數(shù)據(jù)移位完成后,新的數(shù)據(jù)就會再次從TDR轉(zhuǎn)移到發(fā)送移位寄存器里來,依次重復1-3的過程。通過讀取TXE標志位來判斷是否發(fā)送下一個數(shù)據(jù)。
串口接收
數(shù)據(jù)從RX引腳通向接收移位寄存器,在接收控制的控制下,一位一位的讀取RX的電平,把第一位放在最高位,然后右移,移位八次之后就可以接收一個字節(jié)了。
當一個字節(jié)數(shù)據(jù)移位完成之后,這一個字節(jié)的數(shù)據(jù)就會整體的移到接收數(shù)據(jù)寄存器RDR里來。
在轉(zhuǎn)移時會置RXNE接收標志位,即RDR寄存器非空,下方為該位的描述。當被置1后,就說明數(shù)據(jù)可以被讀出。

下圖即為串口接收的工作流程

-
寄存器
+關注
關注
31文章
5620瀏覽量
130455 -
數(shù)據(jù)
+關注
關注
8文章
7349瀏覽量
95057 -
STM32
+關注
關注
2313文章
11195瀏覽量
374756 -
串口通信
+關注
關注
34文章
1663瀏覽量
58198
發(fā)布評論請先 登錄
stm32串口接收和串口發(fā)送的實現(xiàn)過程是怎樣的
STM32串口是如何去實現(xiàn)數(shù)據(jù)發(fā)送與接收的
STM32串口發(fā)送數(shù)據(jù)與接收數(shù)據(jù)淺析
STM32CUBEMX配置教程(八)STM32串口輪詢發(fā)送中斷接收+重定義+優(yōu)化
STM32串口通訊
STM32踩坑:STM32串口發(fā)送亂碼問題
stm32串口
STM32串口發(fā)送數(shù)據(jù)和接收數(shù)據(jù)方式總結(轉(zhuǎn))
21電賽02 stm32串口發(fā)送接收
(二)STM32串口總結(庫函數(shù)版)
一個嚴謹?shù)?b class='flag-5'>STM32串口DMA發(fā)送&接收(1.5Mbps波特率)機制
STM32串口的發(fā)送和接收
評論