USART2不能接收数据

2019-07-21 05:02发布

原子哥,我遇到一个很棘手的问题,我现在使用STM32F103VCT6,串口1通信正常,串口2只能发送数据,不能接收数据,只要接收到数据,芯片就复位了。串口2就进入不了接收中断。还有一个问题就是串口2能使用115200波特率吧?
[mw_shl_code=c,true]void USART2_Init(u32 U2_pclk1,u32 U2_bound) { float U2_temp; u16 U2_mantissa; u16 U2_fraction; U2_temp=(float)(U2_pclk1*1000000)/(U2_bound*16);//得到USARTDIV U2_mantissa=U2_temp; //得到整数部分 U2_fraction=(U2_temp-U2_mantissa)*16; //得到小数部分 U2_mantissa<<=4; U2_mantissa+=U2_fraction; RCC->APB2ENR|=1<<2; //使能PORTA口时钟 RCC->APB1ENR|=1<<17; //使能串口2时钟 GPIOA->CRL&=0XFFFF00FF; //IO状态设置 GPIOA->CRL|=0X00008B00; //IO状态设置 //GPIOA->CRL=0X44448B44; //IO状态设置 RCC->APB1RSTR|=1<<17; //复位串口2 RCC->APB1RSTR&=~(1<<17);//停止复位 //波特率设置 USART2->BRR=U2_mantissa; // 波特率设置 USART2->CR1|=0X200C; //1位停止,无校验位. USART2->CR1|=1<<8; //PE中断使能 校验错误进入中断 USART2->CR1|=1<<5; //接收缓冲区非空中断使能 MY_NVIC_Init(1,1,USART2_IRQChannel,2);//组2,最低优先级 } [/mw_shl_code] [mw_shl_code=c,true]void USART2_IRQHandler(void) {     u8 i;////换存变量 if(USART2->SR&(1<<5))//接收到数据 {       USART2->SR&=~(1<<5);      i=USART2->DR;        LED1=~LED1; } }  [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。