你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

程序的跳转

[复制链接]
lqh-414236 发布时间:2014-4-30 09:57
 keil生成的.axf或者.elf都是可以执行的镜像文件。
0 Z( X6 y3 _  X6 T $ 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)。还要关闭所有中断,如下操作:
( z5 ]5 `$ `; P0 X/ A" I, c' rNVIC_SetVectorTable(0x08000000, 0x00);               
/ `' r0 _, N, t& c% e' K  __disable_irq();
* L( I' Q; a8 e 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
系统重启的函数如下:
/ n0 h& G0 }# C6 K) \static __INLINE void NVIC_SystemReset(void)
1 W. ^3 _7 a4 P* I" S{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 */
: e% w; e* Z# P3 Z  __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可以设置任何串口用于升级不用设置时钟,只需要启动外设即可。
赞 收藏 评论1 发布时间:2014-4-30 09:57

举报

1个回答
MrJiu 回答时间:2014-4-30 10:16:47

RE:程序的跳转

貌似不错..........
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版