本帖最后由 15242026 于 2011-3-8 10:36 编辑
else if (key == 0x32)
{
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
/* Jump to user application */
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
红色的那句代码我不是太懂,我把断点设在“Jump_To_Application();”,
ApplicationAddress=0x8002000
__set_MSP=0x8000156
(1)单步调下去,发现有回到了main(),这是为什么呢?
(2)对了,ApplicationAddress + 4 不就是用户程序的地址了吗?为什么还要“+4”呢? 我写到0x800200的程序就是点亮LED这么简单,为什么不行呢?
新问题: 当断点跳到Jump_To_Application();的时候,在反汇编窗口,可以看到,箭头指向
0x08000A94 68e0 LDR r0,[r4,#0x0c] ;点击“下一步”调试
0x08000A96 4780 BLX r0 ;然后超级中断就不动了,LED也没亮。~~~~
然后,我按下key3(USER)按键,有进入菜单界面。
我现在最主要解决的是download成功后,执行NEW program时,却进入不到app(应用程序)。谁能帮帮忙,我看到另一个帖子说,要使用 “
软件复位用固件库的NVIC_GenerateSystemReset()” 但是我不知道具体怎么做,假如复位了,不是又从程序最初0x8002000开始了吗?
|