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

程序的跳转

[复制链接]
lqh-414236 发布时间:2014-4-30 09:57
 keil生成的.axf或者.elf都是可以执行的镜像文件。1 t6 H, r( u  P! z- a' [* S
 
) V8 {7 ~$ ]3 s1 W& R+ U3 D) NIAP User Program 需要注意的问题  g* D7 _0 {. j! @9 L* c2 T
要设置好好中断向量的问题,假设User Program 开始地址是(0x08008000),那么中断向量就必须设在在0x08008000处,中断向量要设置program的开始的位置。
5 a" f, ^$ ?9 k9 h$ d0 b8 R7 mUser Program到IAP主要是要设置好中断向量,跳转前要注意设置中断向量在IAP程序(0x08000000)的开始地方即(0x08000000)。还要关闭所有中断,如下操作:9 {( O! `' V6 Q
NVIC_SetVectorTable(0x08000000, 0x00);               6 q3 g; o$ i) _8 A
  __disable_irq();4 ~! D4 x- Q: h) n, e- b# C
 ; _$ V- ]- E( D
这样子就可以设置好了。注意programIAP 没有升级 然后直接IAP到program,会导致program没有正常工作,目前的解决方法是:programIAP后,IAP可以让系统重启,然后就可以了。
6 E' [% ?" m( Z1 v$ F1 ^系统重启的函数如下:, f, ~2 F* x7 d2 R
static __INLINE void NVIC_SystemReset(void)
( s6 _* i5 y2 f/ H{# g3 V! d7 Y+ r( J
  SCB->AIRCR  = ((0x5FA AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
) `- C" y8 j% Z0 S7 [                 SCB_AIRCR_SYSRESETREQ_Msk);                   /* Keep priority group unchanged */
+ |1 ?& {: W  g/ G) U# R/ H1 ?+ P) l% I  __DSB();                                                     /* Ensure completion of memory access */             
" e' {+ t5 e6 W7 {1 s6 Q. X  while(1);                                                    /* wait until reset */6 o5 i+ ^) m  F6 L# E! e" N" K
}
& X2 `8 F  @: ^& L" S1 e& w
 
* _- d: G5 Y$ n此函数可以让系统重启。
& X3 E  ^! e& W/ j- ^* c 
, ~9 d5 U7 Z2 ]$ {3 n, S! [* M 
; C1 e# V7 {, u- |7 @4 h7 ]IAP可以设置任何串口用于升级不用设置时钟,只需要启动外设即可。
收藏 评论1 发布时间:2014-4-30 09:57

举报

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

RE:程序的跳转

貌似不错..........

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版