手机版

关于IAP与APP互相跳转的实现(3)

发布时间:2021-06-08   来源:未知    
字号:

4. 编写在一定条件下跳转APP的部分。比如按下某个键,就跳到APP去。

5. 编写跳转APP函数:

#define APP_ADDR 0X08010000

OP_RESULT AppProgramRun(void)

{

INT32U AppSpInitVal; //App程序的SP初值.

INT32U AppJumpAddr; //APP程序的跳转地址.即,APP程序的入口.

void (*pAppFun)(void); //定义一个函数指针.用于指向APP程序入口.

AppSpInitVal = *(INT32U *)APP_ADDR; //取APP的SP初值.

if (AppSpInitVal & 0XFFFF 0000 != 0X20 00 00 00) //APP未写入.不能跳.

{

FaceEnterDialog (&OpFailDialog);

return OP_FAIL;

}

AppJumpAddr = *(INT32U *)(APP_ADDR + 4); //取程序入口.

if ((AppJumpAddr & 0X FF F8 00 00) != 0X 08 00 00 00) //APP无效.不能跳.

{

FaceEnterDialog (&OpFailDialog);

return OP_FAIL;

}

NVIC_DeInit (); //恢复NVIC为复位状态.使中断不再发生.

__MSR_MSP (AppSpInitVal); //设置SP.

pAppFun = (void (*)(void))AppJumpAddr; //生成跳转函数.

(*pAppFun) (); //跳转.不再返回.

return OP_SUCCESS;

}

完成上述几步后,编译调试,OK。

第四步:双程序调试:

1. 用仿真器运行IAP程序,然后按下按键,转到APP去。如果你正常转

到APP,说明成功。不能的话,用仿真器跟一下,把问题解决。

2. 用仿真器运行APP程序,然后按下按键,转到IAP去。如果你正常转

到IAP,说明成功。不能的话,用仿真器跟一下,把问题解决。

3. 用仿真器运行IAP程序,然后按下按键,转到APP。

在APP中又按下按键,转回IAP。如此反复。

可以在IAP第一句设个断点,每次转回来的时候,都应该会停在那里

的。

注意:在跳到另一个程序中运行的时候,要停止不能直接点“停止调试按

纽”,就是那个放大镜一样的按纽,否则MDK立马出错退出。要停止的

话,要先打开反汇编观察窗口,然后按下“停止”按纽,就是左上角红圆圈

里一把叉那个,

再按下“停止调试按纽”。

第五步:在IAP中加载APP。

如果你的板子上没有USB,或都SD卡,这后面的就做不了了。

关于IAP与APP互相跳转的实现(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)