请教下 STM32F105 IAP的问题

2019-12-19 18:05发布


如下图所示,为main()函数里面内容,省略了前面的初始化,
QQ截图20180427193547.jpg (25.9 KB, 下载次数: 0) 下载附件 2018-4-27 19:51 上传

我从BOOT可以跳转到APP,在BOOT中也可以升级,

但是发现从APP跳转到BOOT后,可以初始化,0x58数据能发送,但是 while(1)程序无法运行,现象类似死机;

单独运行BOOT程序是没有问题的

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
saccapanna
1楼-- · 2019-12-20 12:38
isakura 发表于 2018-4-27 23:36
我也刚想问这个问题

比如,在APP中开了其他的定时器 及 SPI 等,然后 关中断,跳到 BOOT,开中断

通用做法,都是直接在app中复位进入boot,boot中用过的东西要全部恢复,关键是外设和中断!然后读取应用区MSP值和入口地址,跳转到入口地址启动app。
isakura
2楼-- · 2019-12-20 15:12
 精彩回答 2  元偷偷看……
saccapanna
3楼-- · 2019-12-20 17:49
isakura 发表于 2018-4-28 00:04
boot中用过的东西要全部恢复
======
这个没问题,复位可以解决,而且也不一定要复位,BOOT中用到的东西 ...

了解了内核是怎么启动的,就没什么难的了。STM32三个文档一定要看:
1. 内核编程手册,例如cortex-m3的手册,相同内核芯片通用的。
2. 芯片的参考手册,系列通用。
3. 数据手册,详细描述某个型号存储,引脚,电气参数等方面的细节。

芯片启动是先从起始地址加载4个直接到MSP也就是栈指针,接下来四个细节就是程序入口地址。
saccapanna
4楼-- · 2019-12-20 18:21
这个在内核编程手册中有。如果要保持某个IO状态,这个要硬件电路设计时保证,例如加上下拉电阻。芯片复位后IO是高阻状态。

复位后的启动基本是固定的,你只能选择复位进去 boot 或 app,一般是进去 boot,boot中用的资源少,现场容易恢复。

一周热门 更多>