stm32F407学习DAY.1 stm32与stlink连接程序烧录(以流水灯为例)

目录

一、stm32常用开发工具

二、stlink连接、驱动安装与开发板上电操作

1、STLINK连接及开发板供电

2、 stlink驱动安装(64位选择)

三、设置stm32启动模式

1、内部 FLASH 启动方式

2、内部 SRAM 启动方式

3、系统存储器启动方式

四、利用STLINK实现流水灯功能


一、stm32常用开发工具

二、stlink连接、驱动安装与开发板上电操作

1、STLINK连接及开发板供电

20位JTAG/SWD接口通过JTAG线与开发板相连,JTAG线另一端接STLINK V2,STLINK V2通过USB与电脑相连,即连接完毕。

注意:STLINK无法供电,需要将开发板上的DC6~16V电源输入端口插电连接,按压电源开关,观察到蓝光闪烁即为开发板上电成功。

2、 stlink驱动安装(64位选择)

直接双击按照顺序点,均为默认设置无需更改。

打开设备管理器观察是否安装成功,显示有即为安装成功

三、设置stm32启动模式

1、内部 FLASH 启动方式

当芯片上电后采样到 BOOT0 引脚为低电平时, 0x00000000 和 0x00000004 地址被映射到
内部 FLASH 的首地址 0x08000000 和 0x08000004。因此,内核离开复位状态后,读取内部 FLASH的 0x08000000 地址空间存储的内容,赋值给栈指针 MSP,作为栈顶地址,再读取内部 FLASH的 0x08000004 地址空间存储的内容,赋值给程序指针 PC,作为将要执行的第一条指令所在的地址。完成这两个操作后,内核就可以开始从 PC 指向的地址中读取指令执行了。

2、内部 SRAM 启动方式

类似于内部 Flash,当芯片上电后采样到 BOOT0 和 BOOT1 引脚均为高电平时,地址
0x00000000 和 0x00000004 被映射到内部 SRAM 的首地址 0x20000000 和 0x20000004,内核从SRAM 空间获取内容进行自举。在实际应用中,由启动文件 starttup_stm32f407xx.s 决定了
0x00000000 和 0x00000004 地址存储什么内容,链接时,由分散加载文件(sct)决定这些内容的绝
对地址,即分配到内部 FLASH 还是内部 SRAM。

3、系统存储器启动方式

当芯片上电后采样到 BOOT0=1, BOOT1=0 的组合时,内核将从系统存储器的 0x1FFFF000
及 0x1FFFF004 获取 MSP 及 PC 值进行自举。系统存储器是一段特殊的空间,用户不能访问,
ST 公司在芯片出厂前就在系统存储器中固化了一段代码。因而使用系统存储器启动方式时,内
核会执行该代码,该代码运行时,会为 ISP(In System Program)提供支持,在 STM32F4 上最常
见的是检测 USART1 传输过来的信息,并根据这些信息更新自己内部 FLASH 的内容,达到升
级产品应用程序的目的,因此这种启动方式也称为 ISP 启动方式。

 利用跳线帽确保BOOT 设置为 BOOT0(简称 B0)和 BOOT1(简称 B1)都连接 GND
,即选择内部 FLASH 启动方式。

四、利用STLINK实现流水灯功能

 1、打开工程文件

2、打开后点击上方,  选择Debug,在Use处选择ST-Link Debugger,勾选Run to main()后,点击setting

选择ST-LINK/V2,按照下图设置,观察右上是否有显示仿真器,若显示为空,检查开发板是否连接或上电无误。

点击确定,设置完毕。

再点击Utilities,勾选Use Debug Driver,点击settings进入Flash算法设置界面:

勾选Reset and Run 选项,实现在编程后自动运行,点击确定。3、

程序源码:

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"


int main(void)
{
    sys_stm32_clock_init(336, 8, 2, 7);     /* 设置时钟,168Mhz */
    delay_init(168);                        /* 延迟初始化 */
    led_init();                             /* 初始化LED */

    while(1)
    {
        LED0(0);                            /* LED0 亮 */
        LED1(1);                            /* LED1 灭 */
        delay_ms(500);
        LED0(1);                            /* LED0 灭 */
        LED1(0);                            /* LED1 亮 */
        delay_ms(500);
    }
}

程序编译:点击左边build(快捷键F7),观察左下角若显示0 Error(s),0 Warining(s)即为build成功,再点击右边LOAD(快捷键F8)下载程序到开发板,可以看到流水灯现象。

<think>嗯,用户的问题是关于STM32F103ZET6通过STLINK烧录时没有提示,需要正确的接线方法和故障排查步骤。首先,我得回想一下STM32的调试接口标准,通常用的是SWD或者JTAG。不过现在STLINK更常用的是SWD接口,因为只需要四根线。 接下来,正确的接线方式应该是怎样的呢?SWDIO对应PA13,SWCLK对应PA14,GND接GND,VCC接3.3V。可能用户接错了线,比如把SWDIO接到其他引脚,或者电源没接对,导致无法通信。另外,供电的问题也很重要,有时候只接了调试器的电源,但目标板没单独供电,可能会出问题。 然后,故障排查步骤应该包括检查接线是否正确,电源是否稳定,驱动是否安装。STLINK的驱动有时候在Windows上需要手动安装,或者更新到最新版本。还有MDK的设置,比如是否选择了正确的STLINK调试器,是否设置了SWD模式,时钟频率是否过高导致通信失败。 用户提到烧录时无提示,可能是在Keil里没有正确识别到设备,或者没有报错信息。需要检查Keil中的配置,比如Flash下载设置里有没有选对芯片型号,或者STLINK的固件是否需要升级。另外,板子上的复位电路是否正常,有时候复位引脚的问题会导致连接失败。 还有可能用户使用的是盗版STLINK或者接触不良的线,导致连接不稳定。建议换线或者换一个STLINK试试。另外,检查STM32的启动模式是否正确,是否处于可烧录的状态,比如BOOT0和BOOT1的引脚设置是否正确。 最后,解决方案需要一步步来,从接线开始,确认每个步骤都正确,然后检查软件配置,最后考虑硬件问题。可能需要用户提供更多信息,比如具体的错误信息,或者接线照片,才能更准确地诊断问题。</think>### STM32F103ZET6 STLINK烧录问题解决方案 #### 一、正确接线方式 标准SWD接口接线要求: 1. $V_{CC}$ -> 3.3V(目标板供电)[^1] 2. SWDIO -> PA13 3. SWCLK -> PA14 4. GND -> GND 特别注意: - 若目标板独立供电,可不连接$V_{CC}$ - 建议额外连接NRST引脚增强调试稳定性 #### 二、故障排查流程 1. 硬件检查 - 使用万用表验证线路连通性 - 测量目标板供电电压(正常范围:$2.0V \leq V_{DD} \leq 3.6V$) - 检查STLINK指示灯状态(正常:红色电源灯+绿色通信灯) 2. 软件配置 ```c // MDK工程设置要点 DEBUG -> ST-Link Debugger SETTINGS -> Port: SWD, Max Clock: 4MHz Flash Download -> 勾选Reset and Run ``` 3. 系统级检查 - 设备管理器确认STLINK驱动状态 - 更新STLINK固件(使用STSW-LINK004工具) - 验证芯片是否进入睡眠模式(需先复位) #### 三、无提示故障专项处理 当烧录无任何提示时: 1. 执行芯片解锁操作(STM32 ST-LINK Utility) 2. 尝试降低SWD时钟频率至1MHz 3. 检查BOOT引脚状态: $$ BOOT0 \leq 0.3V \quad (正常模式) $$ $$ BOOT1 \leq 0.3V $$ #### 四、典型解决方案 1. 电源异常案 某用户因未连接目标板供电导致: - 测得SWD接口电压:$V_{DD} = 1.2V$ - 接上外部电源后电压恢复至$3.3V$,问题解决 2. 接触不良案 使用示波器捕获SWCLK信号: - 正常波形应为$4MHz$方波 - 接触不良时会出现波形断续
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值