UART4 进不了中断,但通过查询可以把发送的数据显示出来, 这是初始化程序,哪位高手帮忙看看
void Uart4_Init(u32 bound)//
{
float temp;
u16 mantissa;
u16 fraction;
NVIC_InitTypeDef NVIC_InitStructure;
temp=(float)(36*1000000)/(bound*16);//得到USARTDIV
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<4; //使能PORTC口时钟
RCC->APB1ENR|=1<<19; //使能串口4时钟
GPIOC->CRH&=0XFFFF00FF;
GPIOC->CRH|=0X00008B00;//IO状态设置
RCC->APB1RSTR|=1<<19; //复位串口4
RCC->APB1RSTR&=~(1<<19);//停止复位
//波特率设置
UART4->BRR=mantissa; // 波特率设置
UART4->CR1|=0X200C; //1位停止,无校验位.
//使能接收中断
// UART4->CR1|=1<<8; //PE中断使能
// UART4->CR1|=1<<5; //接收缓冲区非空中断使能 UART4_IRQChannel
// //MY_NVIC_Init(3,3,UART4_IRQChannel,2);//组2,最低优先级
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;//NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1
}
|