本帖最后由 hyarcher25 于 2016-12-14 09:34 编辑
STM32F107,用以太网UDP进行IAP实验。IAP:0x8000000,APP:0x8010000
第一次将IAP程序下载到芯片,然后用上位机写APP程序可以实现跳转,之后APP返回IAP模式后,再次进行升级后,便无法运行APP程序了。
使用了systick中断,但参考网上教程说使用__set_PRIMASK(1);关闭所有中断,之后进入其它程序初始化执行__set_PRIMASK(0);开启所有中断即可。
查看了论坛里面的有此问题的帖子,但还是没有解决。。。请各位大神指点!
IAP-TO-APP跳转:
void iap_load_app(u32 appxaddr)
{
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)
{
__set_PRIMASK(1);
jump2app=(iapfun)*(vu32*)(appxaddr+4);
MSR_MSP(*(vu32*)appxaddr);
jump2app();
}
}
APP-TO-IAP跳转:
void IAPRun(void)
{
__set_PRIMASK(1);
jump2app=(iapfun)*(vu32*)(IAP_ADDR+4);
__set_MSP(*(vu32*)IAP_ADDR);
jump2app();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>