STM32微控制器修改串列埠波特率

2021-10-10 03:16:15 字數 1349 閱讀 5387

總結對於stm32f1系列的開發板,串列埠波特率設定之後,就開始進行通訊了,一般情況下是不需要修改的,但是在實際的專案開發中,我們可能需要通過串列埠對模組進行配置等操作,配置完模組之後進行資料之間的通訊,又需要更改其波特率,所以下面要介紹如何修改串列埠波特率。

在開發板上電之後,main函式下需要有配置好的串列埠引數及中斷函式,下面介紹均以串列埠2為例。

**示例如下:

void

usart2_init

(void

)

gpio_init(gpioa, &gpio_initstructure); 這句**中gpio_initstructure被定義為結構體型別,型別名為gpio_inittypedef ,進入下面函式:

typedef

struct

gpio_inittypedef;

可以發現對於引腳初始化需要對引腳,速度和模式進行配置。

usart_init(usart2, &usart_initstructure);對於串列埠初始化函式,和以上類似,usart_initstructure也是被定義為結構體型別usart_inittypedef ,進入下面函式:

typedef

struct

usart_inittypedef;

由標準庫中的**,我們可以知道,配置串列埠時,需要對波特率,位元組長度,停止位,校驗位,模式和硬體資料流五項進行配置。

以上對串列埠配置完成,下面對配置好的串列埠修改其波特率。

之前串列埠2配置的波特率為115200,下面我們把波特率修改為57600,**如下:

void

usart_config

(uint32_t baud)

這是乙個無返回值但是需要輸入引數的函式,其輸入引數為修改值波特率。配置完成之後,直接呼叫函式 usart_config(57600);即可。

以下有兩點特別說明:

其一:此函式的作用是把串列埠2的波特率修改為一特定值,如果想要多次修改波特率值,可以寫乙個陣列,裡面包括你想要切換的波特率,實時監測切換就行。

其二:修改串列埠波特率時,一定要先把串列埠關閉,呼叫函式usart_cmd(usart2, disable); ,以免造成資料傳輸錯誤,出現亂碼,配置完成之後,再次開啟串列埠,呼叫函式usart_cmd(usart2, enable); 。

新的一天新的開始,美好的一天從學習串列埠開始!哈哈

STM32波特率設定

usart1的波特率公式 baud rate fck 16 usartdiv usartdiv fck 16 baud rate 然後按下述方法計算,例如匯流排時鐘頻率為72mhz,配置波特率為9600過程如下 求得 usartdiv 468.75,因為stm32的波特比率暫存器usart brr分...

stm32波特率計算

1.什麼是波特率 不管是什麼微控制器,在使用串列埠通訊的時候,有乙個非常重要的引數 波特率。什麼是波特率 波特率就是每秒傳送的位元組數。雙方在傳輸資料的過程中,波特率一致,這是通訊成功的基本保障。下面以stm32微控制器為例,講解一下串列埠波特率的計算方法。2.stm32波特率相關的暫存器 stm3...

微控制器串列埠通訊波特率計算

在模式0和模式2下,串列埠波特率固定,模式0為fosc 12。模式2為fosc 32或fosc 64,具體由pcon暫存器的smod位決定。在模式1和模式3下,波特率是乙個可變值,波特率可以由定時器1產生 8052可以由定時2產生 那麼波特率到底為多少呢?波特率由定時器1的溢位率來決定 baud r...