【保姆级实操版 - STM32 系列笔记】STM32F103标准库开发:Keil5新建工程完整教程

STM32F103标准库开发:Keil5新建工程完整教程

本文详细讲解如何使用 Keil5 新建 STM32F103 标准库工程,适合STM32入门开发者快速搭建开发环境

  • 这是我创建完成的工程模板 👌 工程模板,欢迎大家按需取用~ (链接失效了的话喊我!)

Keil5新建工程

一、开发环境准备

在开始创建工程前,需确保已安装并配置好以下工具:

  1. Keil MDK-ARM:本文以 V5.39 版本为例
  2. STM32F10x标准外设库:本文以 V3.6.0 版本为例(ST官方提供,可从官网或社区镜像下载)

二、创建工程模板文件

步骤1:创建根目录与模板文件夹

  1. 在电脑中新建一个文件夹(如STM32_PROJS)作为工程根目录
  2. 在根目录下创建template文件夹,用于存放工程模板文件

步骤2:划分模板子文件夹

template文件夹中新建4个子文件夹,用于分类管理文件:

  • CMSIS:用于存放内核驱动、启动引导文件(核心系统文件)
  • FWLIB:用于存放标准库外设函数文件(GPIO、UART、TIM等驱动)
  • User :用于存放用户程序文件(主函数main.c、自定义功能代码)

三、导入STM32标准库文件

步骤1:复制CMSIS核心文件

从解压后的标准库中,将以下文件复制到工程CMSIS文件夹:

  1. 内核支持文件core_cm3.h
    • 路径:STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport
  2. 设备系统文件system_stm32f10x.csystem_stm32f10x.h
    • 路径:STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
  3. 启动文件 :根据芯片型号选择,STM32F103C8T6选择startup_stm32f10x_md.s(中等容量芯片)
    • 路径:STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
  4. 头文件stm32f10x.hstm32f10x_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.cstm32f10x_rcc.c等)。

四、Keil5新建工程并配置

步骤1:新建Keil工程

  1. 打开Keil uVision5,点击顶部菜单栏Project → New μVision Project
  2. 选择工程保存路径为根目录 STM32_PROJS 下的 template 文件夹,新建工程文件夹 TEST,点击保存

步骤2:选择芯片型号

在弹出的Select Device for Target窗口中:

  1. 搜索框输入STM32F103C8
  2. 选择STMicroelectronics → STM32F1 Series → STM32F103C8
  3. 点击OK,完成芯片选择
  1. 关闭弹出的新建工程小助手

步骤3:创建文件组并添加库文件

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

五、配置Keil编译环境

步骤0:配置调试器 (本文用的是 ST-LINK)

  1. 点击 "魔术棒按钮",点击 Debug 选项
  2. 下拉列表选中 ST-LINK
  3. 点击 OK 确认

步骤1:添加头文件搜索路径

  1. 右键Target 1Options for Target 'Target 1'
  2. 切换到C/C++选项卡,点击Include Paths后的...按钮
  3. 添加以下路径(相对路径,确保路径正确):
    • ../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);
	}
}

效果如下:

完结撒花 🌸

相关推荐
做cv的小昊3 小时前
【TJU】研究生应用统计学课程笔记(8)——第四章 线性模型(4.1 一元线性回归分析)
笔记·线性代数·算法·数学建模·回归·线性回归·概率论
踏着七彩祥云的小丑3 小时前
嵌入式测试学习第1天:电路基础核心概念
单片机·嵌入式硬件
我命由我123454 小时前
程序员的心理学学习笔记 - 空杯心态
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
晓梦林4 小时前
3170靶场学习笔记
笔记·学习
ZC跨境爬虫4 小时前
跟着 MDN 学 HTML day_17:媒体与 Web Audio API 自动播放指南——策略、检测与最佳实践
前端·笔记·ui·html·音视频·媒体
ErizJ5 小时前
Redis|学习笔记
redis·笔记·学习
Amazing_Cacao5 小时前
CFCA精品可可饮品认证课程高级压力测试:在极端液态变量中,捍卫精品巧克力品质的稳定复现法则
笔记
Deitymoon6 小时前
STM32F103——超声波模块
stm32·单片机·嵌入式硬件
xian_wwq6 小时前
【学习笔记】变电保护、测控、安自、自动化系统概述
笔记·学习·保护
泰勒朗斯6 小时前
rootflight学习笔记
笔记·学习