做ppt的模板的網(wǎng)站有哪些如何優(yōu)化網(wǎng)站
? ? ? ? STM32的串口是相當豐富的,功能也很強勁。最多可提供5 路串口,有分數(shù)波特率發(fā)生器、支持單線光通信和半雙工單線通訊、支持LIN、智能卡協(xié)議和IrDA SIRENDEC 規(guī)范(僅串口3支持)、具有DMA等。
? ? ? ? 串口最基本的設置,就是波特率的設置。STM32的串口使用起來還是蠻簡單的,只要你開啟了串口時鐘,并設置相應IO口的模式,然后配置一下波特率,數(shù)據(jù)位長度,奇偶校驗位等信息,就可以使用了。下面,我們就簡單介紹下這幾個與串口基本配置直接相關的寄存器。
1,串口時鐘使能。串口作為STM32的一個外設,其時鐘由外設始終使能寄存器控制,這里我們使用的串口1是在APB2ENR寄存器的第14位。除了串口1的時鐘使能在APB2ENR寄存器,其他串口的時鐘使能位都在APB1ENR。
2,串口復位。當外設出現(xiàn)異常的時候可以通過復位寄存器里面的對應位設置,實現(xiàn)該外設的復位,然后重新配置這個外設達到讓其重新工作的目的。一般在系統(tǒng)剛開始配置外設的時候,都會先
執(zhí)行復位該外設的操作。串口1的復位是通過配置APB2RSTR 寄存器的第14位來實現(xiàn)的。
?3,串口波特率設置。每個串口都有一個自己獨立的波特率寄存器USART BRR,通過設置該寄存器達到配置不同波特率的目的。該寄存器的各位描述如下:
?
4.串口控制。STM32 的每個串口都有3個控制寄存器USART CR1~3 ,串口的很多配置 都是通過這 3個寄存器來設置的。
5,數(shù)據(jù)發(fā)送與接收。STM32的發(fā)送與接收是通過數(shù)據(jù)寄存器USART _DR來實現(xiàn)的,這是一個雙寄存器,包含了TDR和RDR當向該寄存器寫數(shù)據(jù)的時候,串口就會自動發(fā)送,當收到數(shù)據(jù)的時
候,也是存在該寄存器內(nèi)。
可以看出,雖然是一個32 位寄存器,但是只用了低9位(DR[8:0]),其他都是保留。 DR[8:0]為串口數(shù)據(jù),包含了發(fā)送或接收的數(shù)據(jù)。由于它是由兩個寄存器組成的,一個給發(fā)送用(TDR),一個給接收用(RDR),該寄存器兼具讀和寫的功能。TDR寄存器提供了內(nèi)部總線和輸出移位寄存器之間的并行接口。RDR寄存器提供了輸入移位寄存器和內(nèi)部總線之間的并行接口。
當使能校驗位(USART CR1 種PCE 位被置位)進行發(fā)送時,寫到MSB的值(根據(jù)數(shù)據(jù)的長度不同,MSB是第7位或者第8位)會被后來的校驗位該取代。當使能校驗位進行接收時,讀到的MSB位是接收到的校驗位。
6. 串口的狀態(tài)可以通過狀態(tài)寄存器 USART SR 讀取串口狀態(tài)。
這里我們關注一下兩個位,第5、6 位RXNE 和TC。
RXNE(讀數(shù)據(jù)寄存器非空),當該位被置1的時候,就是提示已經(jīng)有數(shù)據(jù)被接收到了,并且可以讀出來了。這時候我們要做的就是盡快去讀取USART DR,通過讀USART DR可以將該位清零,也可以向該位寫0,直接清除。
TC(發(fā)送完成),當該位被職位的時候,表示USARTDR內(nèi)的數(shù)據(jù)已經(jīng)被發(fā)送完成了。如果設置了這個位的中斷,則會產(chǎn)生中斷。該位也有兩種清零方式:1:讀USART SR,寫USARTDR。2:直接向該位寫0。
void uart_init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissar
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
mantissa=temp;//得到整數(shù)部分
fraction=(temp-mantissa)*16://得到小數(shù)部分
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENRI=1<<2;//使能PORTA口時鐘
RCC->APB2ENRI=1<<14;//使能串口時鐘
GPIOA->CRH&=0XFFFFF00F;
GPIOA->CRH|=0X000008B0;//IO狀態(tài)設置
RCC->APB2RSTRI=1<<14;//復位串口1
RCC->APB2RSTR&=~(1<<14)://停止復位
//波特率設置
USART1->BRR=mantissa;//波特率設置
USART1->CR1|=0X200C;//1位停止,無校驗位,USART1->CR1|=1<<8;//PE中斷使能
USART1->CR11=1<<5;//接收緩沖區(qū)非空中斷使能
MY_NVIC_Init(3,3,USART1 IRQChannel,2);//組2,最低優(yōu)先級
}
初始化串口硬件設備,啟用中斷:
配置步驟:
(1)打開GPI0和USART1的時鐘
(2)設置USART1兩個管腳GPI0模式
(3)配置USART1數(shù)據(jù)格式、波特率等參數(shù)
(4)使能USART1接收中斷功能
(5)最后使能USART1功能