STM32初練總結(UART)

2021-10-02 05:44:45 字數 683 閱讀 5240

stm32中可以配置多個uart介面,管腳由使用者自己定義到gpio上,復用時需要開啟afio重對映功能。

比如使用gpioa中的9、10腳來實現uart的tx、rx管腳,需要初始化管腳:

void uart_pin_init(void)

再main函式中呼叫上述傳送函式,**時把uart->dr暫存器新增到watch視窗,奇怪的是,暫存器檢視到的dr中資料一直為零,單步除錯和斷點除錯都能跑過,但是dr中的資料始終為0,百思不得其解,後來檢視datasheet,發現dr這個暫存器很特別,它是乙個讀寫一體的暫存器,既是傳送的緩衝暫存器,也是接收的緩衝暫存器,既然是緩衝暫存器,也就是說,在傳送資料時,寫到dr裡面的資料只是緩衝你一下,然後立馬就轉移到傳送移位暫存器中去了,然後就空了,所以在監視器上看到的dr始終為0,為了證明這一推斷,我把te暫存器關掉了,這樣資料就沒法傳送出去,**了一下,發現程式在寫dr暫存器這裡卡住了,並且從watch視窗中看到cr1->dr這個暫存器一直在閃爍,在0和no in scope之間來回跳轉,從側面反應了這個dr中的資料是暫時的,寫入的資料只能轉給移位暫存器,因此從監視器中是不可讀到的,所以只有等轉移完以後才能讀,這時候dr已經變為0了。

如果有板子的可以接到示波器或者電腦串列埠上看一下,應該有資料傳送出去。

STM32學習筆記之一 初窺STM32

怎麼做好學習筆記?答 自我感知 學習知識 歸納總結 自我昇華 真正屬於自己的知識是,拋開書本,運用時,你還能記得的思想 自我感知 看到知識概念,先自我感覺那應該是個什麼東西 如 暫存器 寄存東西 資料 的地方嘛 學習知識 有了自我感知後,就需要驗證自己的感知是否正確,請記住,帶著自己思想的學習是最高...

STM32外部中斷模擬UART串列埠

串列埠資料幀傳送格式 1個起始位 8個資料位 1個停止位 思路 1.pa9做普通io推挽輸出,按照傳送格式用延時暫時作為該位的傳輸時間,波特率為9600 2.pa10做浮空輸入,外部共享中斷使用 可用其餘外部中斷 每接收到乙個資料就進中斷一次,迴圈接收判斷,當接收到 r n將接收標誌置為0x8000...

STM32的USB初認知

尤其注意的是stm32的usb一次傳輸最高的位元組資料為64位元組 usb的通訊協議 尤其注意的是 狀態階段 用來表示整個傳輸的過程已完全結束。狀態階段傳輸的方向必須與資料階段的方向相反,即原來是in令牌封包,這個階段應為out令牌封包 反之,原來是out令牌封包,這個階段應為in令牌封包。對於 控...