IAP--怎么简化IAP的跳转过程

,首先看下例程的跳转方式,及其繁琐,在跳转前需要关所有用到的外设时钟,这样做原因也很好理解,

就是因为IAP里打开的外设时钟,APP里可能不需要,且跳转过程是不断电的,所以APP里也会保留IAP里

的配置,这样可能会增加芯片功耗,还有一些外设有特殊要求,如USB(见下下图),如果APP中也用到

了USB,那么如果不关USB,APP中可能会操作不了某些寄存器!

 

,如果跳转前有复位操作,那么就可以复位IAP里面设置的寄存器参数,所以只要有复位这个操作即可,我们

可以在启动文件里操作:在执行SystemInit 函数前就跳到该函数里执行跳转的操作。

该函数的实现:我们在IAP升级完成后在flash某个区域写个标志,写完标志就可以执行软复位来进行跳转了,这样

就会重新执行启动文件,从启动文件跳到该函数时判断是否写了这个标志,如果写了,就跳转到APP区域。

 

 同时注意在APP里将跳转标志清除掉:

 注:上面展示时RISCV内核芯片的跳转方式,ARM参考例程同理!

 

posted @ 2024-06-07 10:23  WCH_CH32  阅读(114)  评论(0编辑  收藏  举报