新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32學(xué)習(xí)筆記--串口波特率

stm32學(xué)習(xí)筆記--串口波特率

作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
這幾天的學(xué)習(xí)有什么問題呢?開始看前幾個(gè)例程的時(shí)候貌似還找到些感覺,學(xué)了些東西,比如串口需要配置的波特率是如何計(jì)算的,如何通過位段位帶別名區(qū)的設(shè)計(jì)實(shí)現(xiàn)對(duì)I/O口單個(gè)位的尋址操作,端口模式如何設(shè)置,spi與iic之間各自的優(yōu)勢(shì)和劣勢(shì),上個(gè)周稀里糊涂看了那么多,現(xiàn)在一想就剩下這些了,然后是這個(gè)周,這個(gè)周的感覺是更加的不扎實(shí),很多東西都是走馬觀花,看了就忘,比如中斷控制,直到看了第二遍才形成框架,看門狗DMA游戲手柄紅外通信的各個(gè)實(shí)驗(yàn),好吧,這些東西我僅僅知道是怎么回事,對(duì)他們的了解甚至不如上個(gè)周的模塊,至少還有個(gè)框架,到了這里,只剩下“哦,這個(gè),我知道……”就沒了,對(duì)!就沒了。所以接下來要去改程序,不管改什么程序,當(dāng)然最好是直接拿三軸加速度計(jì)的程序去改,隨便改,改了之后在板子上能看到效果,去做這種事兒,如果這個(gè)模塊沒什么好改的就去改別的,反正要著手去改,不能只這樣看了,好吧,明天開始試試。
下面把我還能記得的東西整理一下。
1.串口的波特率是如何配置的
STM32的每個(gè)串口都有一個(gè)獨(dú)立的波特率寄存器USSART-BRR,通過設(shè)置該寄存器就可以達(dá)到配置不同波特率的目的。當(dāng)然關(guān)鍵是波特率該設(shè)置成多少的問題。因?yàn)槭紫任覀儜?yīng)該知道的是為什么要配置波特率,下面是百度找到的答案
單片機(jī)串行通信波特率就是每發(fā)送兩個(gè)數(shù)據(jù)的之間的間隔,或者是每秒鐘發(fā)送的字節(jié)數(shù),你在進(jìn)行串行通信時(shí),是兩個(gè)單片機(jī)進(jìn)行通信,那肯定是要進(jìn)行同步的(波特率要相同),要不然通信沒法建立
也就是說波特率是不能任意設(shè)置的,需要和芯片配合起來。我們知道波特率之后還需要把它用寄存器表示出來,這就牽涉到最初說道的計(jì)算。其中USART-BRR的最低四位用來存放小數(shù)部分,緊接著的12位用來存放整數(shù)部分,最高16位沒有使用。計(jì)算公式如下
USARTDIV=PCLK2/(串口波特率*16)。這樣就可以算出USARTDIV的值了,然后轉(zhuǎn)換成二進(jìn)制放入寄存器中就完成了對(duì)串口波特率的設(shè)置。


評(píng)論


技術(shù)專區(qū)

關(guān)閉