STM32串口 uart
波特率計算公式:波特率=Fpclkx /(16*USARTDIV)
以uart1為例說明uart1使用PA9,PA10
1、計算波特率參數
temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
mantissa=temp; //得到整數部分
fraction=(temp-mantissa)*16; //得到小數部分
mantissa<<=4;
mantissa+=fraction; //波特率數值
2、PA外設時鐘使能
RCC->APB2ENR|=1<<2; //使能PORTA口時鐘
3、UART時鐘使能
RCC->APB2ENR|=1<<14; //使能串口時鐘
4、IO狀態(tài)初始設置
GPIOA->CRH=0X444444B4;//IO狀態(tài)設置
5、復位串口
RCC->APB2RSTR|=1<<14; //復位串口1
RCC->APB2RSTR&=~(1<<14);//停止復位
6、波特率設置
USART1->BRR=mantissa; // 波特率設置
7、校驗位停止位設置
USART1->CR1|=0X200C; //1位停止,無校驗位.
8、使能接收中斷
USART1->CR1|=1<<8; //PE中斷使能
USART1->CR1|=1<<5; //接收緩沖區(qū)非空中斷使能
MY_NVIC_Init(3,3,USART1_IRQChannel,2);//組2,最低優(yōu)先級
評論