USART1 通訊設定問題

2021-05-22 08:59:11 字數 1821 閱讀 6949

1 問題

在利用usart 結構體進行初始化操作時,

根據函式庫提供的例子進行初始化時候

compiling main.c...

../user/main.c(73): error:  #134: expected a field name

../user/main.c(78): error:  #136: struct "" has no field "usart_clock"

../user/main.c(79): error:  #136: struct "" has no field "usart_cpol"

../user/main.c(80): error:  #136: struct "" has no field "usart_cpha"

../user/main.c(81): error:  #136: struct "" has no field "usart_lastbit"

../user/main.c - 5 error(s), 0 warning(s).

通過檢視相關標頭檔案 時候  發現

typedef struct

usart_inittypedef;

typedef struct

usart_clockinittypedef;

中文提供的初始化 例子如下

根據st英文庫函式提供的例子

example:

/* the following example illustrates how to configure the usart1 */

usart_inittypedef usart_initstructure;

usart_initstructure.usart_baudrate = 9600;

usart_initstructure.usart_wordlength = usart_wordlength_8b;

usart_initstructure.usart_stopbits = usart_stopbits_1;

usart_initstructure.usart_parity = usart_parity_odd;

usart_initstructure.usart_hardwareflowcontrol =

usart_hardwareflowcontrol_rts_cts;

usart_initstructure.usart_mode = usart_mode_tx i  usart_mode_rx;

usart_init(usart1, &usart_initstructure);

通過比較可以發現   第乙個提供的例子的確是存在問題!

就是分明是兩個函式體的 引數 在該例子中統一賦值處理! 早上編譯器出現問題

得出結論!  學習以英文為參考!!

當我在將串列埠進行設定完畢後, 用軟體進行**,始終不能得到我想要傳送字元0xaa~~

仔細檢查設定情況  沒問題,通過外設埠設定發現在usart1 的通訊設定如下

clock disabled,    9603 baud,

1 start bit,

8 data bits,

1.0 stop bits,

no parity

發現usart1的時鐘為 disable狀態~!  

o ! my god!!!

又是忘記了將外設始終 進行使能了~~!~! 

//注意 此處要開啟用到usart1的時鐘   否則引腳不工作

rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);

編譯後  用軟體**後   成功~~~!!

stm32串列埠通訊(usart1)

參考 gpio inittypedef gpio initstructure 24 usart inittypedef usart initstructure 25 nvic inittypedef nvic initstructure 初始化gpio 30 gpio initstructure.g...

1007 422通訊問題

一 422信問題記錄 情景 1,通訊資料鏈為dsp晶元28335 處理能力較低,對外介面422,波特率115200 2,通訊另外一端板載計算機 linux系統,埠422 115200 二 現象 1,任務計算機通過串列埠傳送資料給資料鏈,資料鏈接收資料正常,資料鏈向任務計算機傳送資料,出現資料異常。接...

通訊協議學習 485通訊(1)

1.rs 485通訊協議標準 通訊協議是指雙方實體完成通訊或服務所必須遵循的規則和約定,主要實現兩個裝置之間的資料交換功能,通訊協議分硬體層協議和軟體層協議。硬體層協議決定資料如何傳輸,比如要裝置a要想裝置b傳送0x63,0x63的二進位制數為0110 0011,這8個二進位制數要從裝置a傳輸到裝置...