Stm32里用IAP方式烧程序正常,但是发现掉电再上电之后,程序好像就不进主程序了

Stm32里用IAP方式烧程序正常,但是发现掉电再上电之后,程序好像就不进主程序了,第1张

使用仿真器烧写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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9819327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存