STM32串列埠通訊中遇到有規律的亂碼

2021-06-17 00:32:52 字數 1401 閱讀 2838

stm32串列埠通訊

這幾天學習除錯串列埠通訊,一連好幾天串列埠收發的都是亂碼。之前的亂碼毫無規律,發現是串列埠硬體沒有配置好,此處的配置有三處。

(1)程式中,向量中斷控制器的初始化配置

(2)電腦硬體串列埠設定

(3)串列埠除錯助手

這個配置好了之後,串列埠除錯助手顯示的收發還是和預期的不一樣,不夠程式收發資料變得有規律了。如圖:

傳送a收到q,傳送b顯示r(圖中未顯示),從a到q正好相差16位。而如果傳送漢字的話,還是顯示亂碼。

這中間嘗試了很多辦法,也除錯了好幾天,依然無果。於是我找來開發板配套的源程式設定(源程式的**可以執行,其他的任何**都會亂碼),一一對照,之前以為是程式問題。然後我加了stm32的群(118342902),群裡的大神看了程式給了一句肯定的話說程式沒有問題。

其中群主說正好相差16位,說明的最高位的問題。然後我又將源程式的所有設定重新檢查了一遍。最後發現,,,

之前是用的括號裡的stm32f10x_md的啟動檔案,之後換成stm32f10x_cl之後,一切正常了。

我使用的是107vc的晶元,啟動檔案的設定導致了高位硬性置位。詳細的分析待有時間在說。

下面把程式貼上。

main函式:

中斷函式

這個程式應該是最簡單的測試程式了。由於keil的能力有限,源**不能直接貼上來,只能用的形式上傳上來,不過也沒幾行**。

STM32 串列埠 通訊 中斷

一 資料傳送與接收。1 stm32 的傳送與接收是通過資料暫存器usart dr來實現的,這是乙個雙暫存器,包含了 tdr 和 rdr。當向該暫存器寫資料的時候,串列埠就會自動傳送 當收到資料的時候,也是存在該暫存器內。1 stm32 庫函式操作 usart dr 暫存器傳送資料的函式是 void ...

STM32串列埠通訊中斷接收

串列埠的時序和工作原理就不寫了,主要寫如何應用 串列埠的設定除了gpio外,需要設定的引數有波特率 資料位 停止位,校驗方式 gpio輸出配置af pp復用推挽輸出 gpio出入配置in flaoting浮空輸入 usart的配置為115200的波特率,8位資料長度,1位停止位,無校驗,無硬體流控制...

stm32串列埠通訊

通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...