ST意法半导体
直播中

发烧友推温针

9年用户 866经验值
擅长:光电显示
私信 关注
[问答]

如果BOOT0引脚为高电平则崩溃的原因?怎么解决?


我的 STM3210 板上有奇怪的行为。

我使用 STLink 刷新我的二进制文件,它运行良好。

然后我切换 BOOT0 引脚以使用系统内存中的标准引导加载程序并重置系统。

引导加载程序启动并侦听 UART。

我从 CubeProgrammer 应用程序通过 UART 发送“GO”命令(没有闪烁/读取,只有“GO”命令)。

在调试器中,我看到它按预期跳转到 main() 函数。

但是在调用了一些函数之后它在某处崩溃了并且 PC 寄存器变成了“0x1fffeade”。

如果我禁用 BOOT0 引脚并重新启动 - 一切都会恢复正常。

我不知道如何调试它,请帮忙。

谢谢你。

UPD:感谢@Tesla DeLorean(客户)刚刚意识到“0x1fffeade”地址在系统内存区域中 => 看起来“崩溃”实际上是“重启”。
为什么它会重启?



回帖(1)

孟薇

2022-12-28 15:24:58
>>我没有在我的代码中启用它。
但是您的代码没有启动设备,是吗?如果你继承看门狗,你将不得不继续踢它,否则 CPU 将根据 BOOT0 引脚状态重新启动并重新进入 ROM。

>>..并且不会自动禁用?
据我了解,您特别不能禁用它的功能

确保在代码中尽早设置 SCB->VTOR,ROM 映射为零,SCB->VTOR 的默认值为零,并且您希望它指向 0x08000000 处的 FLASH

>>STM3210板
??早期系列 F103 EVAL 板之一(C、D、E..)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分