请教下 STM32F105 IAP的问题

2019-12-19 18:05发布


如下图所示,为main()函数里面内容,省略了前面的初始化,
QQ截图20180427193547.jpg (25.9 KB, 下载次数: 0) 下载附件 2018-4-27 19:51 上传

我从BOOT可以跳转到APP,在BOOT中也可以升级,

但是发现从APP跳转到BOOT后,可以初始化,0x58数据能发送,但是 while(1)程序无法运行,现象类似死机;

单独运行BOOT程序是没有问题的

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
isakura
2019-12-20 11:06
saccapanna 发表于 2018-4-27 23:22
app 进去 boot ,最好直接触发复位,这样相当于boot全新运行。跳转过去,要注意很多细节,比如可能全局变量 ...


就是直接将 以下 程序

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();

一周热门 更多>