关于stm32f4的IAP升级例程中

2019-07-20 22:34发布

不太明白下边这个函数/跳转到应用程序段//appxaddr:用户代码起始地址.
void iap_load_app(u32 appxaddr)
{
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)//检查栈顶地址是否合法.
{
jump2app=(iapfun)*(vu32*)(appxaddr+4);
//用户代码区第二个字为程序开始地址(复位地址)
MSR_MSP(*(vu32*)appxaddr);
//初始化 APP 堆栈指针(用户代码区的第一个字用于存放栈顶地址)
jump2app();  //跳转到 APP.
}
}



为什么要判断(*(vu32*)appxaddr)&0x2FFE0000)是否为0x20000000呢?这是怎么得到的  ,栈顶值为什么是这个














友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。