1,初始化IO串口1,pclk2:PCLK2时钟频率(Mhz),波特率9600, 中断向量一般配置用中断方式接收数据
I/O口配置:TXD配置为复用推挽输出(GPIO_Mode_AF_PP),RXD配置为浮空输入(GPIO_Mode_IN_FLOATING);
void uart_init(u32 pclk2,u32 bound)
{ float temp;u16 mantissa;u16 fraction; temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIVmantissa=temp; //得到整数部分fraction=(temp-mantissa)*16; //得到小数部分 mantissa<<=4;mantissa+=fraction; RCC->APB2ENR|=1<<2; //使能PORTA口时钟 RCC->APB2ENR|=1<<14; //使能串口时钟 GPIOA->CRH&=0XFFFFF00F; GPIOA->CRH|=0X000008B0;//IO状态设置RCC->APB2RSTR|=1<<14; //复位串口1RCC->APB2RSTR&=~(1<<14);//停止复位 //波特率设置USART1->BRR=mantissa; // 波特率设置 USART1->CR1|=0X200C; //1位停止,无校验位.
#ifdef EN_USART1_RX //如果使能了接收//使能接收中断USART1->CR1|=1<<8; //PE中断使能USART1->CR