目录
01.LED闪烁
1、搭建电路板
2、新建工程
(1)前期准备
(2)创建工程文件夹结构
(3)复制固件库文件到对应文件夹
(4)在 Keil 中创建工程
(5)配置工程选项(魔术棒设置)
(6)验证工程配置
3、编写代码点亮一个LED
02.LED流水灯
1、搭建电路板
2、代码修改与端口初始化
03.蜂鸣器
1、搭建电路板
2、程序
04.使用库函数的方法
1. 借助翻译软件
2. 库函数用户手册
3. 百度搜索
学习stm32跟学51单片机的一样诶,都是先学习点灯。以前自己真的是啥也不会,不过在这几天慢慢的学习中,也逐渐学会了很多东西,以前难以理解的东西也渐渐清楚,
01.LED闪烁
1、搭建电路板
- 连接要点:
- 将面包板正极红线朝上放置,注意方向不能反接
- STM32最小系统板需按照图示位置放置,上方和右侧各预留2个孔位,下方预留3个孔位
- 系统板插入面包板时需确保引脚对应孔位准确
- 使用跳线将最小系统板正负极引出至面包板供电引脚
- GND引脚连接负极,3.3V引脚连接正极
- 上下四排供电引脚通过此方式获得系统板提供的电源
- 按照引脚标识符将STLINK连接到最小系统板
- 注意引脚并非顺序排列,需仔细核对标识避免错接
2、新建工程
按照之前的步骤完成对基本电路的创建
总结概括一下:
(1)前期准备
工具与文件
安装 Keil MDK(建议 5.28 及以上版本),并安装 STM32F1 系列器件支持包(Pack Installer 中勾选STM32F1xx_DFP
)。
下载 STM32 标准外设库(如STM32F10x_StdPeriph_Lib_V3.5.0
),包含外设驱动文件。
(2)创建工程文件夹结构
新建主文件夹
在电脑本地目录(如D:\STM32_Projects
)下,创建以 “序号 - 功能” 命名的工程文件夹,例如 3-1 LED闪烁
。
创建子文件夹
在主文件夹内新建 3 个子文件夹,用于分类管理文件:
Start
:存放启动文件和芯片核心支持文件
Library
:存放外设固件库文件,
User
:存放用户主程序文件(如main.c
、main.h
)
(3)复制固件库文件到对应文件夹
Start 文件夹
从固件库路径STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
中,复制对应启动文件:
STM32F103C8 属于中容量芯片,选择 startup_stm32f10x_md.s
(md
代表 Medium-density)。
复制核心支持文件:
从CMSIS\CM3\DeviceSupport\ST\STM32F10x
复制 stm32f10x.h
、system_stm32f10x.c
、system_stm32f10x.h
到Start
。
Library 文件夹
src
目录:从STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
复制所有.c
文件(如stm32f10x_gpio.c
、stm32f10x_rcc.c
等)。
inc
目录:从STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
复制所有.h
文件(与src
对应)。
User 文件夹
新建main.c
(主程序入口)和main.h
(用户自定义头文件)。
从固件库Project\STM32F10x_StdPeriph_Template
复制 stm32f10x_conf.h
(库配置文件)到User
。
(4)在 Keil 中创建工程
新建工程
打开 Keil MDK,点击菜单栏Project → New μVision Project
,选择之前创建的主文件夹3-1 LED闪烁
,命名工程(如LED_Blink.uvprojx
),点击 “保存”。
选择目标芯片
在弹出的 “Device” 窗口中,搜索并选择 STM32F103C8
,点击 “OK”。
弹出 “Manage Run-Time Environment” 窗口时,直接点击 “Cancel”(后续手动添加文件)。
创建文件组并添加文件
在左侧 “Project” 窗口的 “Target 1” 下,右键点击Source Group 1
,选择 “Rename”,改为Start
;
同理,新建两个文件组,分别命名为Library
和User
。
向文件组添加对应文件:
Start
组:添加Start
文件夹下的startup_stm32f10x_md.s
、system_stm32f10x.c
。
Library
组:添加Library/src
文件夹下所有.c
文件(可按需求筛选,如仅保留stm32f10x_gpio.c
、stm32f10x_rcc.c
等必要文件)。
User
组:添加User
文件夹下的main.c
、stm32f10x_conf.h
。
(5)配置工程选项(魔术棒设置)
点击工具栏 “魔术棒” 图标(Options for Target),进行以下配置:
C/C++ 选项卡:配置头文件路径
在Include Paths
栏点击右侧 “...”,添加头文件所在文件夹路径:
..\Start
(Start
文件夹相对路径)
..\Library\inc
(Library
的头文件目录)
..\User
(User
文件夹)
在Define
栏输入宏定义:USE_STDPERIPH_DRIVER
(启用标准外设驱动)。
Debug 选项卡:配置调试器
在 “Debug” 下拉菜单中选择 ST-Link Debugger
,点击右侧 “Settings”。
在 “ST-Link Debugger” 设置中,确认 “Port” 为SW
(默认),点击 “OK”。
Flash Download 选项卡:配置下载参数
勾选Reset and Run
(下载后自动复位并运行程序)。
点击 “Add”,选择STM32F10x Medium-density Flash
(中容量芯片 Flash 算法),点击 “OK”。
确认芯片参数:128K On-chip Flash
,地址范围0x08000000 - 0x0801FFFF
(默认已匹配)。
保存配置
点击 “OK” 关闭工程选项窗口,完成所有配置。
(6)验证工程配置
在main.c
中编写简单测试代码(如初始化 GPIO),点击 “编译” 按钮(Build),确认无错误(0 Error)。
连接 ST-Link 调试器与 STM32 开发板,点击 “下载” 按钮(Load),程序应能正常下载并运行。
关键注意事项
启动文件必须与芯片容量匹配(中容量用md
,大容量用hd
),否则程序无法启动。
头文件路径若遗漏,会导致 “找不到 xxx.h” 错误;宏定义错误会导致固件库功能不可用。
调试器选择需与实际硬件一致(如使用 J-Link 则选择对应选项)。
3、编写代码点亮一个LED
初始化步骤:
开启GPIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)
配置GPIO结构体:模式、引脚、速度
调用GPIO_Init完成初始化
输出控制:
GPIO_ResetBits(GPIOA, GPIO_Pin_0):输出低电平
GPIO_SetBits(GPIOA, GPIO_Pin_0):输出高电平
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET/Bit_RESET):带参数控制
(灯闪烁)
02.LED流水灯
1、搭建电路板
- 硬件连接:
- 8个LED正极全部连接到正极供电孔
- 负极依次连接到PA0-PA7端口
- 接线技巧:
- 先插两边LED再插中间,可适当弯曲引脚方便安装
- 使用PA0-PA7端口实现8位流水灯控制
2、代码修改与端口初始化
- 时钟配置:
- 保持RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)不变
- 端口扩展:
- 原代码仅初始化GPIO_Pin_0
- 需要添加PA0-PA7共8个引脚初始化
- 按位或操作:
- 使用GPIO_Pin_0 | GPIO_Pin_1 | ... | GPIO_Pin_7方式
- 或直接使用GPIO_Pin_All初始化全部16个引脚
- 引脚编码原理:
- 每个引脚对应一个二进制位:PA0=0x0001(0001),PA1=0x0002(0010)
- 按位或操作相当于多选开关,如0x0001|0x0002=0x0003(0011)
- 特殊定义:
- GPIO_Pin_All=0xFFFF,可一次性选择所有引脚
- 外设控制:
- 时钟控制等外设也采用相同位操作逻辑
03.蜂鸣器
1、搭建电路板
- 接线方法:
- VCC正极连接正极供电孔
- GND负极连接负极供电孔
- 控制端选择PB12引脚(避免使用PA15/PB3/PB4调试端口)
- 端口选择注意事项:
- PA15、PB3、PB4默认是JTAG调试端口
- 若需用作普通IO口需额外配置
- 实际案例:未配置时会出现无输出现象
2、程序
- 关键配置:
- 时钟使能:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)
- 引脚模式:推挽输出(GPIO_Mode_Out_PP)
- 输出速度:50MHz(GPIO_Speed_50MHz)
- 指定引脚:GPIO_Pin_12
04.使用库函数的方法
1. 借助翻译软件
查看方法:在代码编辑器中右键点击函数名选择"转到定义",可查看函数和参数的英文说明文档
翻译工具:推荐使用有道词典等翻译软件,开启划词翻译功能可实时查看英文文档的中文释义
使用技巧:选中英文术语后自动弹出翻译结果,适合快速理解函数参数含义
2. 库函数用户手册
中文手册:STM32F103xx固件函数库用户手册提供完整函数说明,包含:
函数原型和参数说明
使用示例代码
模式编码对照表(如GPIO_Mode的16种编码)
版本差异:当前使用V3.5.0库函数,但手册对应老版本,部分用法可能有细微差异
文件位置:位于资料文件夹/固件库/STM32F10x_StdPeriph_Lib_V3.5.0目录下
3. 百度搜索
搜索技巧:使用"STM32 GPIO初始化程序"等具体关键词
参考来源:优先查看CSDN博客、电子工程世界等技术社区
应用方法:可直接复制他人已验证的代码片段,注意:
核对函数参数与实际需求是否匹配
确认GPIO工作模式(如推挽输出GPIO_Mode_Out_PP)
检查时钟使能配置(RCC_APB2PeriphClockCmd)