使用仿真器烧写app并且仿真是直接运行的app,没有经过IAP跳转。掉电后重新上电运行app则要通过IAP进行跳转。
说白了,那你的IAP存在bug,多半是逻辑上的,自己在IAP里面多看看吧,找找原因。
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函数调用。
IAP升级要程序要十分严谨的,你把升级文件做个校验CRC或者别的校验,把串口接收到的数据直接写入到单片机内部FLASH,把APP所有数据写入完成,在从你写入的地址到结束的地址,
把里面数据进行校验,如果正确直接跳转IAP
以上就是关于Stm32里用IAP方式烧程序正常,但是发现掉电再上电之后,程序好像就不进主程序了全部的内容,包括:Stm32里用IAP方式烧程序正常,但是发现掉电再上电之后,程序好像就不进主程序了、c语言用法 typedef、用stm32f103RE单片机做IAP串口远程升级,APP大于ram,这个怎么办没有接外部flash。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)