当前位置:首页 > 单片机 > 单片机
[导读]Note: keil生成的.axf或者.elf都是可以执行的镜像文件。IAP User Program 需要注意的问题要设置好好中断向量的问题,假设User Program 开始地址是(0x08008000),那么中断向量就必须设在在0x08008000处,中断向量要

Note: keil生成的.axf或者.elf都是可以执行的镜像文件。

IAP <->User Program 需要注意的问题

要设置好好中断向量的问题,假设User Program 开始地址是(0x08008000),那么中断向量就必须设在在0x08008000处,中断向量要设置program的开始的位置。

User Program到IAP主要是要设置好中断向量,跳转前要注意设置中断向量在IAP程序(0x08000000)的开始地方即(0x08000000)。还要关闭所有中断,如下操作:

NVIC_SetVectorTable(0x08000000, 0x00);

__disable_irq();

问题:如果这样子做,跳到了IAP后,有从IAP跳回来,就会出现问题了,原因不懂。我的解决方法是:当执行完IAP后,即升级完成后,直接重启MCU系统。

这样子就可以设置好了。注意program<->IAP 没有升级 然后直接IAP到program,会导致program没有正常工作,目前的解决方法是:program<->IAP后,IAP可以让系统重启,然后就可以了。

系统重启的函数如下:


static__INLINEvoidNVIC_SystemReset(void)

{

SCB->AIRCR=((0x5FA<

(SCB->AIRCR&SCB_AIRCR_PRIGROUP_Msk)|

SCB_AIRCR_SYSRESETREQ_Msk);/*Keepprioritygroupunchanged*/

__DSB();/*Ensurecompletionofmemoryaccess*/

while(1);/*waituntilreset*/

}



此函数可以让系统重启。

简单的说IAP就是一个普通额程序,就是负责APP的Flash区的擦除和编程。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭