日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]1. 什么是波特率不管是什么單片機,在使用串口通信的時候,有一個非常重要的參數(shù):波特率。什么是波特率:波特率就是每秒傳送的字節(jié)數(shù)。雙方在傳輸數(shù)據(jù)的過程中,波特率一致,這是通訊成功的基本保障。下面以STM32單

1. 什么是波特率

不管是什么單片機,在使用串口通信的時候,有一個非常重要的參數(shù):波特率。什么是波特率:波特率就是每秒傳送的字節(jié)數(shù)。雙方在傳輸數(shù)據(jù)的過程中,波特率一致,這是通訊成功的基本保障。下面以STM32單片機為例,講解一下串口波特率的計算方法。

2. STM32波特率相關(guān)的寄存器

STM32單片機設(shè)置波特率的寄存器只有一個:USART_BRR寄存器,如下圖所示。

該寄存器的有效位數(shù)為16位,前4位用于存放小數(shù)部分,后12位用于存放整數(shù)部分。將波特率算出來后,數(shù)值填入這個波特率就可以了。下面介紹如何計算。

3. 波特率計算方法

STM32的數(shù)據(jù)手冊給出了計算方法,有一個公式,如下圖所示:


在這個公式上,共有三個變量,其中兩個我們是知道的,F(xiàn)ck和Tx/Rx波特率這兩個是已知的,USARTDIV是未知的。通過該公式的描述可以看出如果使用USART1的話,那Fck就是PCLK2=72MHz,否則就是PCLK1=36MHz,Tx/Rx波特率這個參數(shù)是已知的。只需要計算出USARTDIV的值賦值給USART_BRR寄存器就可以了。以115200為例,將公式變形后得到:USARTDIV = 72×1000000/(16×115200) = 39.0625。即將39.0625寫入USART_BRR即可。

前文說過,USART_BRR的前4位存放小數(shù)部分,后12位存放整數(shù)部分。

那小數(shù)部分DIV_Fraction = 0.0625×16 = 1 = 0x01;

那整數(shù)部分DIV_Mantissa = 39 = 0x27;

那USART_BRR = 0X271;

數(shù)據(jù)手冊給我們提供了一張數(shù)據(jù)表:


在這張數(shù)據(jù)表上,已經(jīng)算出了常用的波特率值,我們可以拿來直接用。但是如果我們想把波特率的計算做成一個傳參函數(shù)的方式,

如:USART_INIT(uint_t 16 Baud),在調(diào)用時只需要寫USART_INIT(9600),USART_INIT(115200),那程序該怎么寫呢?

4. 程序的實現(xiàn)

下面介紹的是寄存器版的程序。


程序第一步45行:先計算得到USART_DIV,這個就是前面公式的變形;

程序第二步46行:獲得USART_DIV的整數(shù)部分;

程序第三步47行:獲得USART_DIV的小數(shù)部分;

程序第四步48行:將整數(shù)部分左移4位,即存入BRR寄存器的后12位;

程序第五步49行:將整數(shù)和小數(shù)部分合在一起,即前4位和后12位重新組合;

程序第六步50行:將計算出來的數(shù)值賦給BRR寄存器。

這樣一個將波特率作為形參的函數(shù)就完成了。從以上來看的話,波特率的計算好像也不是很難啊。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉