STM32F103标准库开发:Keil5新建工程完整教程
本文详细讲解如何使用 Keil5 新建 STM32F103 标准库工程,适合STM32入门开发者快速搭建开发环境
- 这是我创建完成的工程模板 👌 工程模板,欢迎大家按需取用~ (链接失效了的话喊我!)
Keil5新建工程
一、开发环境准备
在开始创建工程前,需确保已安装并配置好以下工具:
- Keil MDK-ARM:本文以 V5.39 版本为例
- STM32F10x标准外设库:本文以 V3.6.0 版本为例(ST官方提供,可从官网或社区镜像下载)
二、创建工程模板文件
步骤1:创建根目录与模板文件夹
- 在电脑中新建一个文件夹(如
STM32_PROJS)作为工程根目录 - 在根目录下创建
template文件夹,用于存放工程模板文件

步骤2:划分模板子文件夹
在template文件夹中新建4个子文件夹,用于分类管理文件:
- CMSIS:用于存放内核驱动、启动引导文件(核心系统文件)
- FWLIB:用于存放标准库外设函数文件(GPIO、UART、TIM等驱动)
- User :用于存放用户程序文件(主函数
main.c、自定义功能代码)
三、导入STM32标准库文件
步骤1:复制CMSIS核心文件
从解压后的标准库中,将以下文件复制到工程CMSIS文件夹:
- 内核支持文件 :
core_cm3.h- 路径:
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport
- 路径:
- 设备系统文件 :
system_stm32f10x.c、system_stm32f10x.h- 路径:
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
- 路径:
- 启动文件 :根据芯片型号选择,STM32F103C8T6选择
startup_stm32f10x_md.s(中等容量芯片)- 路径:
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
- 路径:
- 头文件 :
stm32f10x.h、stm32f10x_conf.h- 路径:
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x,STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template
- 路径:
操作结果如下:

步骤2:复制FWLIB外设库文件
将标准库中STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver文件夹下的inc(头文件)和src(源文件)完整复制到工程FWLIB文件夹,包含所有外设驱动文件(如stm32f10x_gpio.c、stm32f10x_rcc.c等)。

四、Keil5新建工程并配置
步骤1:新建Keil工程
- 打开Keil uVision5,点击顶部菜单栏
Project → New μVision Project - 选择工程保存路径为根目录
STM32_PROJS下的template文件夹,新建工程文件夹TEST,点击保存

步骤2:选择芯片型号
在弹出的Select Device for Target窗口中:
- 搜索框输入
STM32F103C8 - 选择
STMicroelectronics → STM32F1 Series → STM32F103C8 - 点击
OK,完成芯片选择

- 关闭弹出的新建工程小助手

步骤3:创建文件组并添加库文件
- 在Project窗口右键
Target 1,依次创建3个文件组:CMSIS、FWLIB、User - 向
CMSIS组添加工程CMSIS文件夹下的core_cm3.h等全部 6 个文件 - 向
FWLIB组添加工程FWLIB文件夹下的misc.c等全部 46 个文件 - 向
User组添加空的main.c文件(后续编写主函数,我随便写了点内容)

五、配置Keil编译环境
步骤0:配置调试器 (本文用的是 ST-LINK)
- 点击 "魔术棒按钮",点击
Debug选项 - 下拉列表选中
ST-LINK - 点击
OK确认

步骤1:添加头文件搜索路径
- 右键
Target 1→Options for Target 'Target 1' - 切换到
C/C++选项卡,点击Include Paths后的...按钮 - 添加以下路径(相对路径,确保路径正确):
../CMSIS../FWLIB/inc../User

步骤2:添加宏定义
在C/C++选项卡的Define输入框中添加宏: USE_STDPERIPH_DRIVER
USE_STDPERIPH_DRIVER:启用标准库驱动

六、编写测试代码(验证工程)
在User文件夹下的main.c中编写简单的LED闪烁测试代码,验证工程是否正常:
c
#include "stm32f10x.h"
// 标准库 延时函数(带 volatile,不被优化,否则灯是常亮的)
void Delay_ms(uint32_t ms)
{
volatile uint32_t i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 7200; j++);
}
int main(void)
{
// 1. 使能 GPIOC 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// 2. 初始化 PC13 为推挽输出
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStruct);
// 3. 死循环,LED 闪烁
while(1)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 亮
Delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_13); // 灭
Delay_ms(500);
}
}
效果如下:
