CH573当同时使能2个以上串口中断时就会不断重新复位,怎么解决?

您好!

 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

}


谢谢!

您好,可以参考以下串口2和串口3间透传的博客。

CH582m串口透传程序 - JayWell - 博客园 (cnblogs.com)

微信图片_20230210164113.png

出现不断重启的情况时,可以在hardfault函数中加打印,查看有没有数组溢出。

CH57x/CH58x/CH32V wch risc-v 芯片hardfault问题追踪&程序卡死追踪 - iot-fan - 博客园 (cnblogs.com)


只有登录才能回复,可以选择微信账号登录