跳转至

创建 STM32 工程

概述


 在通过 Keil5 建立工程时,除了需要创建Keil工程,使其建立一些Keil的基本文件外,还需要手动导入STM32的一些引导文件。

 在创建工程前,确保 Keil5 已经安装了需要使用的芯片的器件支持包。

固件包


 固件包是 STM 公司提供的 STM32 芯片工作所需的文件和例程等相关开发资料。

例如 STM32F103C8T6 的固件包中,文件结构如下:

文件名 作用
_htmresc 一些Logo图片
Libraries STM32的库函数文件夹
Project 官方提供的工程示例模板
Utilities STM32官方评估板相关例程
Release_Notes.html 库函数的发布文档
stm32f10x_stdperiph_lib_um.chm 库函数的使用手册

创建项目 [标准库]

通过 Keil5 创建工程


启动 Keil5 通过点击:Project -> New μVision Project 创建工程。

选择项目存放地址,并且为项目取名后,选择需要使用的单片机芯片。

在选择好单品机芯片后弹出的 Manage Run-Time Environment 窗口本篇无需使用,因此不做介绍。

Keil5 工程创建完毕后,打开工程目录,Keil5 自动生成了若干文件。

导入 STM32 启动文件


 由于 SMT32 启动文件众多,因此需要在工程目录下新建以下文件夹用于存储对应的 STM32 启动/库文件,从而使工程结构清晰,便于编写和查找代码。

  • 📁 START 存放 STM32 的启动文件
  • 📁 LIBRARY STM32 标准库的外设库文件
  • 📁 src 用户编写的源码
  • 📁 inc 用于编写的头文件
  • 📁 Hardware 用于存储硬件的驱动文件
  • 📁 System 用于存储 STM32 系统功能文件

将所需所需使用的MCU的固件库文件夹内的相关文件复制到上述文件夹内,即可完成 STM32 启动文件的导入。

STM32 F10x 系列芯片


START

内核启动文件

文件位置:STM32F10x_StdPeriph_Lib -> Libraries -> CMSIS -> CM3 -> CoreSupport

  • 📁 core_cm3.c
  • 📁 core_cm3.h

时钟配置文件

文件位置:STM32F10x_StdPeriph_Lib -> Libraries -> CMSIS -> CM3 -> DeviceSupport -> ST -> STM32F10x

  • 📁 system_stm32f10x.c
  • 📁 system_stm32f10x.h

外设寄存器描述文件

文件位置:STM32F10x_StdPeriph_Lib -> Libraries -> CMSIS -> CM3 -> DeviceSupport -> ST -> STM32F10x

  • 📁 stm32f10x.h

STM32启动文件(1)

文件位置:STM32F10x_StdPeriph_Lib -> Libraries -> CMSIS -> CM3 -> DeviceSupport -> ST -> STM32F10x -> startup -> arm

  • 📁 startup_stm32f10x_md.s
  1. 同一个芯片有很多型号,STM32 的固件库提供了多种.s 结尾的启动文件,具体选择参照后续。

LIBRARY

将 STM32 固件库提供的标准外设库.c和.h文件复制到该目录下

文件位置:

  • .c文件:STM32F10x_StdPeriph_Lib -> Libraries -> STM32F10x_StdPeriph_Driver -> src
  • .h文件:STM32F10x_StdPeriph_Lib -> Libraries -> STM32F10x_StdPeriph_Driver -> inc

src

配置库函数头文件包含关系

  • 📁 stm32f10x_conf.h

中断函数配置文件

  • 📁 stm32f10x_it.c
  • 📁 stm32f10x_it.h

文件位置:STM32F10x_StdPeriph_Lib -> Project -> STM32F10x_StdPeriph_Template

Keil5 导入文件&文件夹


在启动文件复制到 Keil5 工程目录下后,需要手动将其导入至 Keil5 软件内才可使用。

  1. Keil5 软件左侧 Project 栏内将 Source Group 1 更名为 START 后右键选择:Add Existing Files to Group 'START' 在文件浏览器中,将工程目录下同名文件夹内的文件导入其中。

  1. Keil5 软件左侧 Project 栏内的 Target 1 点击 Add Group 添加文件夹。

  1. 重复上述 1 和 2 的操作,分别创建 LIBRARYsrcinc文件夹,并且将其项目目录下同名文件夹内文件导入至 keil5 中,并且在 src 文件夹中通过右键:Add New Item to Group 'src' 向该文件夹内添加:main.c 文件作为程序的主入口。

添加文件目录至 Keil5 PATH


  在创建完毕 Keil5 工程并且导入 STM32 启动文件后,对于 Keil5 来说并不知道用户导入的文件在什么位置,因此需要手动将创建的目录地址导入至 Keil5 中。

在弹出的资源管理器中,将前面步骤中手动创建的文件夹的地址添加到 PATH 中即可。

添加宏定义


  SMT32 标准库需要使用一条宏定义来开启 STM32 标准库头文件包含,将下列内容粘贴至指定位置即可。

开启STM32 标准库所用的宏定义位于 stm32f10x.h 文件中,不同MCU可能存在不同,这里仅以 stm32f103c8t6 MUC 作为展示

宏定义: USE_STDPERIPH_DRIVER

关于STM32工程中启动文件的选择


STM32固件包内的启动文件众多,需要根据芯片的类型进行选择分为以下几种类型。

LD_VL (Low Density Value Line)

小容量产品超值系列

型号:STM32F100

Flash容量:16~32K

MD_VL (Medium Density Value Line)

中容量产品超值系列

型号:STM32F100

Flash容量:64~128K

HD_VL (High Density Value Line)

大容量产品超值系列

型号:STM32F100

Flash容量:256~512K

LD (Low Density)

小容量产品

型号:STM32F101/102/103

Flash容量:16~32K

MD (Medium Density)

中容量产品

型号:STM32F101/102/103

lash容量:64~128K

HD (High Density)

大容量产品

型号:STM32F101/102/103

Flash容量:256~512K

XL (EXtra Large)

加大容量产品

型号:STM32F101/102/103

Flash容量:大于512K

CL (Connectivity Large)

互联型产品

型号:STM32F105/107