STM32程序跳转需要注意的问题
2014-03-27 18:24
155 查看
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 __INLINE void NVIC_SystemReset(void)
{
SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */
__DSB(); /* Ensure completion of memory access */
while(1); /* wait until reset */
}
此函数可以让系统重启。
简单的说IAP就是一个普通额程序,就是负责APP的Flash区的擦除和编程。
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 __INLINE void NVIC_SystemReset(void)
{
SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */
__DSB(); /* Ensure completion of memory access */
while(1); /* wait until reset */
}
此函数可以让系统重启。
简单的说IAP就是一个普通额程序,就是负责APP的Flash区的擦除和编程。
相关文章推荐
- (总结)使用STM32需要注意的问题
- 我在程序中这么做f1==f2,可是明明相等但是程序中却按不相等的去做了。难道浮点数比较还有什么需要注意的问题吗?
- 编写多线程java程序时需要注意哪些问题?(来自于effective java se)
- 【小程序】调用wx.request接口时需要注意的几个问题
- Windows Mobile程序获取google map切片时候需要注意的问题
- (转)专业的程序员需要具备的思考能力:写一个程序需要注意多少细节问题
- Shiro整合SSH开发3:配置Shiro认证后页面地址跳转问题(和详述不配置需要注意的问题)
- c#程序调用c++编写dll需要注意问题
- 使用qApp->quit();退出程序需要注意的一点问题
- 跳转到修改页面和执行修改需要注意的小问题
- 【小程序】调用wx.request接口时需要注意的几个问题
- 多线程原理、线程安全函数和多线程程序需要注意的问题
- 32位C/C++程序移植到64位系统时需要注意的问题
- 调试使用了函数模块的程序时需要注意的一个小问题
- C51程序unsigned和signed类型数据判断时候需要注意的问题
- 权限问题实在头疼啊?不光是上传文件夹的权限,还有很多程序文件的特殊权限需要注意!
- 写python程序需要注意的问题
- c#程序调用c++编写dll需要注意问题
- BDC程序需要注意的问题!(常见问题集合)
- 调试使用了函数模块的程序时需要注意的一个小问题