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