【保姆级实操版 - 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);
	}
}

效果如下:

完结撒花 🌸

相关推荐
葡萄成熟时 !17 小时前
JAVA 常用API学习笔记
java·笔记·学习
捷瑞电子工坊17 小时前
FreeRTOS任务管理:从入门到实践(标准库版)
stm32·嵌入式·freertos·实时操作系统·任务管理·标准外设库·任务挂起与恢复
DevOpenClub18 小时前
个人公开市场研究笔记功能需求文档
笔记
恒锐丰科技韩生1 天前
SS8844T|8.2‑40V 四通道独立半桥驱动 ETSSOP28 带散热焊盘 工业自动化机器人专用
嵌入式硬件·硬件工程
不会代码的小猴1 天前
7. JSON
开发语言·c++·笔记·qt·算法·json
Hello_Damon_Nikola1 天前
INMP441从入门到精通
单片机·嵌入式硬件·物联网
恒锐丰小瑞1 天前
率能SS6810H 32V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式,用于POS打印机/安防相机/机器人
嵌入式硬件·数码相机·机器人·硬件工程
恒锐丰科技林技术员1 天前
SS8812T 双通道 H 桥电机驱动芯片应用解析
经验分享·嵌入式硬件·硬件工程
ye150127774551 天前
12V转3V-5V2A电位器无极调光调速WT7027
stm32·单片机·嵌入式硬件
GGMM7891 天前
富士 EP‑3955D 变频器主板维修调试笔记
笔记·变频器·变频器维修