STM32 串列埠的基本配置(暫存器版)筆記
阿新 • • 發佈:2019-01-02
1.串列埠
1.串列埠作為MCU和外界的連線工具,既可以檢驗程式碼的正確性,也可以和上位機進行交流
2.在STM32F103RCT6中,最多支援5路串列埠,對於串列埠而言,一般使用序列通訊(USART1--5)
3.幾個比較重要的暫存器:
<1>:USART->SR(狀態暫存器)
<2>USART->DR(資料暫存器)
<3>USART->BRR(波特率暫存器)
具體配置過程
1.計算波特率(整數和小數部分)
2.初始化GPIO口
3.復位USART 配置波特率,配置奇偶校驗,停止位等
4.配置中斷(可編寫中斷服務函式)
程式碼實現:
//初始化IO 串列埠1 //pclk2:PCLK2時鐘頻率(Mhz) //bound:波特率 //1.計算波特率(整數和小數) //2.初始化引腳 //3.復位USART1 //4.設定奇偶校驗等 //5.設定中斷 void uart_init(u32 pclk2,u32 bound)//USART1使用pclk2 USART2-5使用PCLK1 { float temp; u16 mantissa;//整數 u16 fraction;//小數 temp=(float)(pclk2*1000000)/(bound*16);//temp(float)=32.0625 temp=32; mantissa=temp;//整數部分 fraction=(temp-mantissa)*16; mantissa<<=4; mantissa=mantissa+fraction;//以hex的形式 USART->BRR //設定GPIO口 RCC->APB2ENR|=1<<2;//設定串列埠時鐘 RCC->APB2ENR|=1<<14;//設定串列埠時鐘 GPIOA->CRH&=0XFFFFF00F;//PA9 PA10 GPIOA->CRH|=0X000008B0;//1000 1010 RXD TXD //複用 RCC->APB2RSTR|=1<<14; RCC->APB2RSTR&=~(1<<14); //設定波特率 USART1->BRR=mantissa; USART1->CR1|=0X200C;//設定停止位和校驗位 //中斷 #if EN_USART_RX //使能接收中斷 USART1->CR1|=1<<8;//接收使能 USART1->CR1|=1<<5;//接收緩衝區非空中斷使能 MY_NVIC_Init(3,3,USART1_IRQn,2); #endif }