刚接触stm32f4时发现程序烧录进去没运行的问题

文章讲述了在STM32开发过程中遇到的烧录问题,特别是STLink和DAP烧录时需要保持Boot0为0才能成功运行程序。错误地将STM32的复位脚连接到STLink的复位脚导致问题,实际上应避免影响Boot0的状态。同时,提到长按RST的烧录方法和串口烧录作为解决问题的策略。
摘要由CSDN通过智能技术生成

方法一

本文主要参考以下两篇文章 

bbhttps://blog.csdn.net/weixin_35779001/article/details/112037894icon-default.png?t=N7T8https://blog.csdn.net/weixin_35779001/article/details/112037894https://blog.csdn.net/a919964703/article/details/124072915icon-default.png?t=N7T8https://blog.csdn.net/a919964703/article/details/124072915

/*实际上是stlink的接线问题,一开始我将stm32的复位脚接到stlink的reset脚,一直运行不了,忘记在哪里看到说f4的stlink复位引脚已经硬件拉高需要我们手动置低,即接GND或者不接即可。*/

以上的方法是正确的,但理解的原因确实错误的,经过下文对boot1和boot0的学习,我回去翻看了该开发板的原理图(stm32f411)他stlink连接的引脚Reset连接的是boot0,然后我测试了stlink运行时reset引脚输出的是高电平,所以所有的问题都浮出水面,当我连接了reset引脚时boot0一直为1所以stlink烧录完成后不能运行。


以上是我在上一块板子(stm32f411cet6)时第一次烧录程序遇到的问题,当时就像这样一知半解,糊里糊涂的解决了这个问题,以为我已经解决了,但深层原因并没有理解,直至最近又运用上了一块新的板子(stm32f4zgt6)又遇到了同样的情况,不过这次用的是DAP烧录。花了我好久都不能解决这个问题。最后发现是单片机boot引脚的问题,厂家出厂的时候将boot0与3.3v引脚用盖帽短接,导致程序不能运行,再深入了解了单片机烧录程序与boot0,boot1引脚的关系后,发现可以归类为一类问题。就是在DAP、stlink、J-link等烧录的时候boot0要始终为0。boot0与boot1与单片机的关系如下图所示。

 简单的来说

使用串口烧录程序时需要将boot0置1,boot1置0

使用DAP等烧录工具进行烧录时需要将boot0置0才行

下图也可以跟直观的看出,J-link的情况我照搬到DAP上试过也同样适用。

方法二

网上有方法说长按RST,点击编译后再松开

这种方法的原理是,屏蔽里面原有的代码

因为原有的代码将SWJ调试端口关闭了

我长按RST后他的代码不运行,当我们松开的瞬间SWJ调试端口立即被占用,就会重新刷新单片机中的代码就可以了。

方法三

使用串口烧录将原有的关闭了SWJ调试端口的代码覆盖掉就好了

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 通过U盘升级程序是一种方便且常用的方法来更新STM32F4的固件。下面是简要的步骤: 1. 准备工作:确保你已经准备好了一个可用的U盘和要更新的固件文件。 2. 将固件文件复制到U盘:将要更新的固件文件复制到U盘的根目录下(确保有其他文件或文件夹存在于U盘根目录)。 3. 连接U盘:将U盘插入你的计算机的USB接口。 4. 启动STM32F4:通过USB线将STM32F4板连接到你的计算机,并通过ST-Link或者其他具有虚拟串口功能的USB接口。 5. 进入Bootloader模式:按下STM32F4板上的BOOT0引脚或者使用开发环境的烧写工具来进入Bootloader模式。 6. 打开DFU模式:在Bootloader模式下,STM32F4会被识别为USB设备。打开计算机上的DFU工具,并选择STM32F4设备(通常会以STM开头)。 7. 下载固件文件:在DFU工具中,选择"下载"或者"升级"选项,并浏览到U盘中的固件文件。点击"开始"或者"下载"按钮开始下载固件文件。 8. 等待升级完成:DFU工具会自动将固件文件下载到STM32F4中。等待过程完成,并确保不要中断电源或者拔出USB连接。 9. 完成升级:升级完成后,DFU工具会显示"下载完成"或者类似的提示。此,你可以断开USB连接并重新启动STM32F4。 通过以上步骤,您就可以使用U盘来升级STM32F4的固件。请注意,在升级过程中要确保固件文件正确,不要中断电源或者拔出USB连接,以免导致升级失败。 ### 回答2: 在STM32F4系列微控制器上,可以通过U盘进行程序升级。具体步骤如下: 1. 首先,需要在STM32F4上实现USB功能。这可以通过使用STM32Cube库或HAL库来设置USB设备模式完成。 2. 在程序中,需要初始化USB接口以便电脑可以识别STM32F4作为一个存储设备。这可以通过初始化USB HID设备或者USB MASS存储设备来完成。 3. 当STM32F4连接到电脑上,电脑将会把STM32F4识别为一个U盘设备。此,可以通过文件资源管理器访问到STM32F4的存储空间。 4. 将需要升级的程序文件复制到STM32F4的存储空间中。这个程序文件应该是.bin或者.hex格式。 5. 复制完成后,断开STM32F4与电脑的连接。 6. 在STM32F4上,程序可以通过读取存储空间中的程序文件并将其写入到芯片的闪存中来进行升级。 7. 升级完成后,重启STM32F4,新的程序将会在启动执行。 需要注意的是,在程序升级过程中需要确保芯片上的程序运行或者访问闪存的操作,以免发生冲突。同,升级过程中也需要校验和验证升级文件的完整性,保证升级的正确性。 综上所述,STM32F4可以通过U盘进行程序升级,需要实现USB功能并设置为USB存储设备,将程序文件复制到存储空间中,然后通过读取并写入闪存来进行升级。 ### 回答3: 要通过U盘升级STM32F4程序,需要按照以下步骤进行操作: 1. 首先,确保STM32F4的固件已经配置为支持通过U盘升级程序。在开发环境中,需要将Boot0引脚连接到高电平,并将Boot1引脚连接到低电平。这样可以使芯片进入启动模式。 2. 准备一个格式化为FAT32文件系统的U盘,并在根目录下新建一个名为"firmware.bin"的文件。这个文件将用于存储新的程序固件。 3. 将新的程序固件使用开发环境中的烧录工具编译生成的bin文件复制到U盘的根目录下,并将其重命名为"firmware.bin"。 4. 将U盘插入计算机,并将STM32F4插入计算机的USB接口。确保芯片正常被识别,并通过正确的驱动程序与计算机通信。 5. 在计算机上打开烧录工具,选择通过U盘进行升级的方式,并选择对应的COM端口。 6. 点击“开始”按钮,烧录工具将开始检测U盘中的固件文件,并将其下载到芯片中进行升级。这个过程可能需要一些间,需要耐心等待。 7. 等待烧录工具提示升级完成,并断开U盘和芯片的连接。 通过以上步骤,就可以通过U盘升级STM32F4程序了。需要注意的是,确保芯片的引脚配置正确,并且新的固件文件存放在U盘的根目录下,并且命名为"firmware.bin"。此外,在升级过程中要确保电源供应稳定,避免意外断电导致升级失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值