2019-12-19 18:05发布
huangguimina4 发表于 2018-4-27 22:46 全局中断开了吗?
saccapanna 发表于 2018-4-27 23:22 app 进去 boot ,最好直接触发复位,这样相当于boot全新运行。跳转过去,要注意很多细节,比如可能全局变量 ...
最多设置5个标签!
还真有可能是这个问题,
查找了下,只在跳转的时候 __set_FAULTMASK(1); 关闭了
跳到BOOT后没找到打开的地方;
我也刚想问这个问题
比如,在APP中开了其他的定时器 及 SPI 等,然后 关中断,跳到 BOOT,开中断
在BOOT中, NVIC_Configuration() 又 没设置那些话,那么 会造成 错误导致 跑飞 那些 吗
===============
还有,如果 APP 跳到 BOOT中再复位的话,那么可不可以 不跳转,直接在 APP 中复位呢 (我用flash保存了一个状态值,可以判断是 升级APP 还是直接 运行APP)
哪种方式更好?
就是直接将 以下 程序
if (((*(vu32*)IAP_StartAddress) & 0x2FFE0000 ) == 0x20000000)
{
// Jump to user application
JumpAddress = *(vu32*) (IAP_StartAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
//Initialize user application's Stack Pointer
__set_MSP(*(vu32*) ApplicationAddress);
Jump_To_Application();
}
换成 复位的程序
__set_FAULTMASK(1);//- 关闭所有中断
NVIC_SystemReset();//复位-升级完成- 系统复位
__DSB();
一周热门 更多>