您好!
CH573的串口使能1个串口中断时一切正常,但是当使能2个或以上串口中断时就出现程序不断重启的状况,应该怎么解决?我要同时使用4个串口中断,是否需要设置中断优先级?
串口初始化的代码如下:
void Uart0_Init(void)
{
//---UART0 INIT-------------波特率512000
GPIOPinRemap( DISABLE, RB_PIN_UART0 ); //不使能重映射
//TXD gpio初始化
GPIOB_SetBits(bTXD0);
GPIOB_ModeCfg(bTXD0, GPIO_ModeOut_PP_5mA);
//RXD gpio初始化
GPIOB_SetBits(bRXD0);
GPIOB_ModeCfg(bRXD0, GPIO_ModeIN_PU);
//uart0 init
UART0_DefInit();
#ifdef LDS_ENABLE
//enable interupt
UART0_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
PFIC_EnableIRQ(UART0_IRQn);
//PFIC_SetPriority(UART0_IRQn,0x40); //设置为中优先级中断
#endif
}
void Uart1_Init(void)
{
//---UART1 INIT-------------波特率115200
//---GPS-----
GPIOPinRemap( DISABLE, RB_PIN_UART1 ); //不使能重映射
//TXD gpio初始化
GPIOA_SetBits(bTXD1);
GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
//RXD gpio初始化
GPIOA_SetBits(bRXD1);
GPIOA_ModeCfg(bRXD1, GPIO_ModeIN_PU);
//uart1 init
UART1_DefInit();
#ifdef GPS_ENABLE
//enable interupt
UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
PFIC_EnableIRQ(UART1_IRQn);
#endif
}
谢谢!