|
keil生成的.axf或者.elf都是可以执行的镜像文件。 $ G# c* B( A7 s- H: E5 D IAP User Program 需要注意的问题. n" F, d4 q7 V- _ 要设置好好中断向量的问题,假设User Program 开始地址是(0x08008000),那么中断向量就必须设在在0x08008000处,中断向量要设置program的开始的位置。2 n% i* t% ` {7 E9 O! k User Program到IAP主要是要设置好中断向量,跳转前要注意设置中断向量在IAP程序(0x08000000)的开始地方即(0x08000000)。还要关闭所有中断,如下操作: NVIC_SetVectorTable(0x08000000, 0x00); __disable_irq(); 8 I2 X3 p1 w. x. h. n1 X* E3 c% E 这样子就可以设置好了。注意programIAP 没有升级 然后直接IAP到program,会导致program没有正常工作,目前的解决方法是:programIAP后,IAP可以让系统重启,然后就可以了。; S$ w; @& }; m% q) i, X, H9 O 系统重启的函数如下: static __INLINE void NVIC_SystemReset(void) {4 ~" a+ `/ Z" ^ SCB->AIRCR = ((0x5FA AIRCR & SCB_AIRCR_PRIGROUP_Msk) |! a+ z, }: ^! t- Q$ I& s& g SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ __DSB(); /* Ensure completion of memory access */ * Z7 G0 d! ?# W- S8 q while(1); /* wait until reset */, K7 _; A! l; I0 b# Z, |/ f }- G& b9 x b6 W 9 k5 ?2 ~% @! F3 \! C- i 此函数可以让系统重启。, Z) u% e1 f. J* ^& k9 N3 v 1 H2 ?: m1 v6 y ! ~! r) t' G) Z0 j* w IAP可以设置任何串口用于升级不用设置时钟,只需要启动外设即可。 |
微信公众号
手机版
RE:程序的跳转