关于CH32X033的IAP跳转到APP的问题

你好,我的目标板使用UART2作为调试日志输出串口,IAP和APP基于官方最新1.6的EVT修改,UART2会在IAP和APP里都初始化一次。

但目前遇到的问题是:UART2在IAP下打印日志正常,跳转到APP后,会输出一些乱码,然后就没输出了。

(IAP与APP的波特率一致)

我试过在跳转前启用或者注释掉下列代码,都没什么效果:


        GPIO_Cfg_Float();
        RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2, DISABLE );
        USART_Cmd( USART2, DISABLE );
        USART_DeInit( USART2 );


但是APP的USB接口是正常的,我通过上位机连接USB,发现APP是正常启动了的。



另外发现,在IAP跳转到APP前,如果关闭了AFIO( RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO, DISABLE ) ),经常会导致APP无法启动,硬件复位,然后无限刷IAP的日志,无限复位,请问这是什么情况?

还有一点想问下,为什么IAP跳转到APP,需要实现在软中断里,可以直接在非中断代码里jump吗?


您好,注意IAP工程中,串口的IAP升级使用的也是串口2,若打印也是用串口2,可能会引起冲突。你可以仅在APP函数中使用串口2打印试一下是否会有该问题。可以在非中断函数中进行跳转,注意跳转要在机器模式下。后续若有问题,可以邮箱(lzs@wch.cn)沟通


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