STM32F103 在KEIL环境下使用ST-LINK不能自动复位运行,不能调试,完全断电,再上电就可以运行了。

STM32F103 在KEIL环境下使用ST-LINK不能自动复位运行,不能调试,完全断电,再上电就可以运行了。

自己画了个板子,从头进行调试,测试流水灯时发现了问题。

现象

 点击烧录,在keil上确实是显示运行了,但是LED并没有闪烁。而且点击调试直接就跑飞了,但是并没崩溃。复位后也依旧不能调试。

解决方式

  1. KEI5软件配置问题。
  2. 硬件问题。
  3. ST-LINK问题。
  4. STM32启动方式问题。

总结网上的解决方法

1、KEIL5 软件配置

  1. flah 勾选 r e s e t − a n d − r u n \color{red}{reset - and - run} resetandrun
  2. Pack 取消勾选 E n a b l e \color{red}{Enable} Enable

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/727fd4c6130745718069224b99e3b3ff.png在这里插入图片描述

"烧录之后,依旧不能解决问题。而且我没有Pack选项,我看很多人也没有
在这里插入图片描述

2、硬件问题

  1. 以为是供电电压不够,只使用烧录器供电是3.3V。测量也确实是3.3V。使用type-c 5V供电
    依旧不能解决问题。

3、ST-LINK 问题

不需要装驱动,keil自带的,而且烧录也没有问题,基本排除了ST-LINK 问题。

4、STM32启动问题

STM32启动方式

启动模式选择引脚启动模式说明
BOOT1BOOT0
x0主闪存存储器主闪存存储器被选为启动区域
01系统存储器系统存储器被选为启动区域
11内置SRAM内置SRAM 被选为启动区域
  1. 启动地址:0x08000000 是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
  2. 第二种方式(boot0 = 1;boot1 = 0):System memory启动方式
  • 启动地址:0x1FFF0000从系统存储器启动,这种模式启动的程序功能是由厂家设置的。系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,出厂后无法修改。,我们选用这种启动模式时,是为了从串口下载程序

1、将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
2、最后在BootLoader的帮助下,通过串口下载程序到Flash中
3、程序下载完成后,需要将BOOT0设置为GND,手动复位,便可以运行。

  1. 第三种方式(boot0 = 1;boot1 = 1):SRAM启动方式。
    启动地址:0x20000000 内置SRAM,没有程序存储的能力了,这个模式一般用于程序调试。用于快速的程序调试。

我的板子是GD32F103CBT6,没找到BOOT1引脚,只有BOOT0引脚,
我将 B O O T 0 引脚接地后,便可以直接运行了,前提是勾选了前面的复位。 \color{red}{我将BOOT0引脚接地后,便可以直接运行了,前提是勾选了前面的复位。} 我将BOOT0引脚接地后,便可以直接运行了,前提是勾选了前面的复位。

原因是什么呢?

当 MCU flash 被檫除,之后又执行了断电上电过程,“empty check”标志会被置位(IC 为 空),这种情况下内部 bootloader 代码将被执行。“empty check”标志是在装载 option bytes 时置位的,option bytes 在 power-on 和 OBL_LAUNCH 复位时会进行装载。在客户的应用中 ST-Link Utility 对 IC 进行编程结束时复位了 IC,但“empty check”标志仍然是置位的。因此在“emptycheck”置位的情况下即使客户应用代码存在,但仍会运行 bootloader 代码。如果要刷新“empty check”标志只能通过断电上电过程或是执行 OBL_LAUNCH 复位命令。ST-Link Utility 在编程后没有执行 OBL_LAUNCH 复位命令,因此客户的应用程序不会被执行。

查到的连接地址

https://shequ.stmicroelectronics.cn/thread-633557-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值