金牌会员
 
- 积分
- 1182
- 金钱
- 1182
- 注册时间
- 2020-5-13
- 在线时间
- 202 小时
|
10金钱
本帖最后由 肖暗博 于 2020-8-7 09:16 编辑
#define FLASH_APP_ADDRESS 0x08008000
void Drv_FlashJump2App(void)
{
PFUNCTION Jump2App=NULL;
//printf("\r%p\n",Jump2App);
if((((*(volatile u32*)FLASH_APP_ADDRESS)&0x2FFE0000)==0x20000000)&&((*(volatile u32*)FLASH_FLAG_ADDRESS)==0x000055aa))//检查栈顶地址是否合法.
{
USB_PowerOff();
Drv_DelayNops(DLY_1MS*100);
Jump2App=(PFUNCTION)*(volatile u32*)(FLASH_APP_ADDRESS+4);//用户代码区第二个字为程序开始地址(复位地址)
printf("\r%p\n",Jump2App);
//__set_MSP(*(volatile u32*)FLASH_APP_ADDRESS);
MSR_MSP(*(volatile u32*)FLASH_APP_ADDRESS);//初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
Jump2App();//跳转到APP.
}
}
bin文件烧录都已经成功了, 串口调试的时候, 进入这一步无法正常跳转到 APP程序去。 (08406fc1 这个是我打印出来的Jump2App 地址)
有遇到过这方面问题的大神吗? 求指导!!!
|
最佳答案
查看完整内容[请看2#楼]
是分开的工程, 现在问题解决啦。 我这边是因为 外部加了一个flash。会有两段内存地址。 我这边如果勾选了两个rom内存, 地址分配就会不准确。 所以IAP跳不进去APP里面去。
|