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)下载程序到开发板,可以看到流水灯现象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值