用STM32作MODBUS, 使用串口4,但是初始化时执行到
MY_NVIC_Init(3,1,UART4_IRQChannel,2);这句就停了,
初始化函数如下,什么原因引起的?
void uart4_init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);//得到UART4DIV
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<4; //使能PORTC口时钟
RCC->APB1ENR|=1<<19; //使能串口4时钟
GPIOC->CRH&=0XFFFF00FF;//IO状态设置
GPIOC->CRH|=0X00004B00;//IO状态设置
RCC->APB1RSTR|=1<<19; //复位串口4
RCC->APB1RSTR&=~(1<<19);//停止复位
//波特率设置
UART4->BRR=mantissa; // 波特率设置
UART4->CR1|=0X200C; //使能,1位停止,无校验位.
#if EN_UART4_RX //如果使能了接收
//使能空闲中断
//UART4->CR1|=1<<8; //PE中断使能
UART4->CR1|=1<<4; //IDLE中断使能
UART4->CR1|=1<<5; //接收缓冲区非空中断使能
UART4->CR1|=1<<6; //发送缓冲区非空中断使能
MY_NVIC_Init(3,1,UART4_IRQChannel,2);//组2,抢占优先级3,响应优先级3
LED1=0;
#endif
}
|