初级会员

- 积分
- 117
- 金钱
- 117
- 注册时间
- 2020-4-29
- 在线时间
- 32 小时
|

楼主 |
发表于 2021-1-6 14:58:07
|
显示全部楼层
好吧,跟那些都没关系是跳转之前要进行一步恢复RCC状态的操作,具体为啥不知道
void iap_load_app(u32 appxaddr)
{
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.
{
printf("jump ok\n");
// __set_PRIMASK(1);
RCC_DeInit(); //加了这句就可以跳转了
/* Jump to user application */
JumpAddress = *(__IO uint32_t*) (appxaddr + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) appxaddr);
Jump_To_Application(); //跳转到APP.
}
} |
|