使用仿真器烧写app并且仿真是直接运行的app,没有经过IAP跳转。掉电后重新上电运行app则要通过IAP进行跳转。
说白了,那你的IAP存在bug,多半是逻辑上的,自己在IAP里面多看看吧,找找原因。
你指的地方显然不对,它在第一个while(1)外面,而while(1)是死循环,没有break或return语句是无法退出的。
如果你是想退出while(1)循环,而不退出主函数,要在代码3处加退出条件,如if(条件)break;(只能用break)
如果你不仅想退出while(1)循环,还退出主函数,那么在代码1、2、3处加退出条件皆可,如if(条件)return;(只能用return)
不知我说清楚了吗?有问题可以讨论。
main()
{
while (1)
{
代码1
while (p)
{
代码2
}
代码3
}
// 应该就是在这边加入 return 什么把? 错误,在死循环外加任何语句都无用。
}
typedef void (iapfun)(void);
定义函数指针
iapfun jump2app;
定义函数指针对象
jump2app=(iapfun)(vu32)(appxaddr+4);
为函数指针对象赋值
jump2app();
调用函数
以下是一个例子:
// 定义一个函数
void fun() { printf("fun\n");}
// 定义函数指针,
typedef void (lpfn)();
// 注意二者要匹配,否则会报错
lpfn p = fun;
// 调用函数p()效果同fun()
p();
函数指针的一个作用是可以将函数作为参数传递。
回忆一下c语言中的sort函数,用户可以自定义排序准则函数,然后将其提交给sort函数调用。
以上就是关于Stm32里用IAP方式烧程序正常,但是发现掉电再上电之后,程序好像就不进主程序了全部的内容,包括:Stm32里用IAP方式烧程序正常,但是发现掉电再上电之后,程序好像就不进主程序了、为什么MM32的IAP程序会从while函数开始、c语言用法 typedef等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)