当前,我正在尝试使STM32F405从应用程序代码跳转至引导加载程序,而无需使用boot0和boot1引脚。
我已经尝试了多种方法来完成该任务,但是它总是以固件跳转到引导加载程序(至少看起来像这样)结束,并且在大约18秒钟后,固件重新启动(没有看门狗或类似的东西可能会唤醒)据我所知再次使用了芯片)。 在那18秒钟内,如果我尝试更新固件,则找不到引导加载程序。
我测试了以下内容:
1.(STM32F4 Jump to Bootloader via SoftReset and without BOOT0 and BOOT1 Pin)
2。
我发现但尚无法测试的一种方法基本上是做我在尝试1中描述的方法,但是在STM32F4xx启动文件中使用了汇编代码。 这里的问题是我发现的教程使用了无法使用的KEIL汇编器语法,因为我使用的是Atollic TrueSTUDIO,而且我对汇编器的了解不足,无法将KEIL语法更改为标准的汇编器语法。
最让我感到困惑的是,在另一个项目中,我使用了STM32F3xx(不能记住正确的编号),而我所做的基本上与尝试2相同。但是使用的是STM32F3xx的引导程序地址(0x1FFFD800 ),并且工作正常,我可以通过USB更新固件。
所以我有问题:
答案 0 :(得分:0)
几天前,我找到了造成问题的原因。
在“ system_stm32f4xx.c”中配置了I2S时钟,而在我的项目中该时钟没有被使用。
我不是100%知道为什么,但是在删除了这段代码后,一切都可以正常工作。
(对不起,我很迟才回答,有点忘记了帖子:D)