初级会员

- 积分
- 85
- 金钱
- 85
- 注册时间
- 2015-7-8
- 在线时间
- 10 小时
|

楼主 |
发表于 2016-2-1 17:18:39
|
显示全部楼层
找到问题所在了,在汉字初始化的时候设置了PA2-3,串口2在初始化的时候也设置了PA2-3,可能造成冲突了,现在只要是能显示汉字就不能正常接收数据。能正常接收数据就不能正常显示汉字,求助!!!如何设置,下面是两个初始化的函数:
void SPI_Flash_Init(void)
{
RCC->APB2ENR|=1<<2; //PORTA时钟使能
GPIOA->CRL&=0XFFF000FF;
GPIOA->CRL|=0X00033300;//PA2.3.4 推挽
GPIOA->ODR|=0X7<<2; //PA2.3.4上拉
SPIx_Init(); //初始化SPI
}
void USART2_Init(u32 pclk1,u32 bound)
{
RCC->APB2ENR|=1<<8; //使能PORTG口时钟
GPIOG->CRH&=0XFFFFFF0F; //IO状态设置
GPIOG->CRH|=0X00000030; //IO状态设置
RCC->APB2ENR|=1<<2; //使能PORTA口时钟
GPIOA->CRL&=0XFFFF00FF; //IO状态设置
GPIOA->CRL|=0X00008B00; //IO状态设置
RCC->APB1ENR|=1<<17; //使能串口时钟
RCC->APB1RSTR|=1<<17; //复位串口2
RCC->APB1RSTR&=~(1<<17);//停止复位
//波特率设置
USART2->BRR=(pclk1*1000000)/(bound);// 波特率设置
USART2->CR1|=0X200C; //1位停止,无校验位.
USART2->CR3=1<<7; //使能串口2的DMA发送
UART_DMA_Config(DMA1_Channel7,(u32)&USART2->DR,(u32)USART2_TX_BUF);//DMA1通道7,外设为串口2,存储器为USART2_TX_BUF
#ifdef USART2_RX_EN //如果使能了接收
//使能接收中断
USART2->CR1|=1<<8; //PE中断使能
USART2->CR1|=1<<5; //接收缓冲区非空中断使能
MY_NVIC_Init(2,3,USART2_IRQChannel,2);//组2,最低优先级
TIM4_Init(99,7199); //10ms中断
USART2_RX_STA=0; //清零
TIM4_Set(0); //关闭定时器4
#endif
} |
|