if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
Jump_To_Application = (pFunction) JumpAddress;
//初始化用户程序的堆栈指针
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
Jump_To_Application();
}
用boot进行无线更新程序,发现当无线更新失败, 此时falsh中已经有一部分应用程序, Jump_To_Application()会跳转到boot程序的main函数,并且一直在循环操作,但是boot程序正常情况下应该顺序执行,没有循环执行,求大神指教问题原因~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
无线更新失败时,退出更新流程,由于程序中增加了看门狗复位,一定时间没有喂狗,看门狗复位,顺序执行,执行到jump_to_application();的时候跳转不到应用程序,就会出现我说的异常现象(程序不断在boot里循环执行,此时看门狗没有复位),有点类似于跑飞的现象
一周热门 更多>