请教STM32的前辈们一个小小的疑惑(希望不会浪费前辈们太多的时间啊):
usart文件夹下,的void uart_init(u32 pclk2,u32 bound)函数中有一句不理解,如下中红色标记处:
void usart_Init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(16*bound); //USARTDIV计算
mantissa=temp;
fraction=(temp-mantissa)*16; //取小数
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<2; //GPIOA口时钟使能
RCC->APB2ENR|=1<<14; //串口1时钟使能
GPIOA->CRH&=0xfffff00f; //输入并且模拟输入
GPIOA->CRH|=0x000008b0; //上拉/下拉输入,复用功能开漏输出模式,最大速度50MHz
RCC->APB2RSTR|=1<<14; //复位串口1
RCC->APB2RSTR&=~(1<<14); //停止复位(不这样会一直复位)
USART1->BRR=mantissa; //波特率设置
USART1->CR1|=0x200c; //此句何意??,还有USART1寄存器好像《STM32不完全手册》上没有介绍,其具体定义在哪找啊
#ifdef USART1_RECEIVE_ENABLE
USART1->CR1|=1<<8;
USART1->CR1|=1<<5;
NVIC_Init(2,USART1_IRQChannel,3,3); //中断分组,优先级,中断号选择
#endif
}
谢谢您的指导!!
|