调用下面的程序后就出错,APP程序写在了FLASH中
//跳转到应用程序段
//appxaddr:用户代码起始地址.
void iap_load_app(u32 appxaddr)
{
//(用户代码的第一个字存放的是堆栈的栈顶地址,下面即检查此地址)
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法(用户代码的第一个字存放的是栈顶地址,即检查此地址)
{
jump2app=(iapfun)*(vu32*)(appxaddr+4); //用户代码区第二个字为程序开始地址(复位中断向量地址),强制把该地址转化为iapfun类型的函数指针,再赋给函数指针jump2app
MSR_MSP(*(vu32*)appxaddr); //设置APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
jump2app(); //跳转到APP的复位中断,程序由此开始执行
}
}