工程结构建立
初始化工程目录结构
首先创建一个文件夹test, 用于存放该工程,然后在该文件夹下创建以下几个文件夹(目的是让工程管理起来更有条理):
- lib: 用于存放库文件(像Libraries、Lib等文件名字也是可以的,根据自己的风格,最好是能"见名知义")
- CMSIS: 存放内核核心库文件
- STM32F10x_StdPeriph_Driver: 是STM32Fl0x标准外设驱动库函数目录,存放STM32F10x微控制器的外设驱动(这个文件夹可以不建立,等下直接把库的拷贝过来)
- obj: 用于存放程序编译输出的各种文件
- user: 用于存放main.c等用户自己的文件
添加相关文件
固件库说明
点击展开
首先要去官网或其他渠道下载STM32固件库,这个库包含了我们创建要用到的所有文件,其包含的文件如下
【Libraries】文件夹存放STM32F10x开发要用到的各种库函数和启动文件,包括CMSIS
和STM32F10x_StdPeriph_Driver
两个子文件夹:
【CMSIS】文件夹是内核库核心文件夹,包括CoreSupport和DeviceSupport等两个文件夹
CoreSupport文件夹包括Cortcx-M3内核通用源文件
core_cm3.c
和头文件core_cm3.h
【DeviceSupport】文件夹STM32F0x头文件
stm32f10x.h
和系统初始化文件system_stm32f10x.c
【STM32F10x_StdPeriph_Driver】文件夹是STM32Fl0x标准外设驱动库函数目录,包括了所有STM32F10x微控制器的外设驱动
【Project】文件夹对应STM32F10x标准外设库体系架构中的用户层,用来存放ST官方提供的STM32F10x工程模板和外设驱动示例
【Utilities】文件夹用于存放ST官方评估板的BSP(Board Support Package, 板级支持包)和额外的第三方固件
添加库文件到自己的模板
lib目录-1
在库文件找到下面的文件拷贝到自己刚建立的lib/CMSIS
目录
添加完成后 lib/CMSIS
目录是这样:
这些文件去哪里找:在库文件的 【Libraries】目录下
内核通用源文件
启动文件,只需要红框圈起来的那个,对应 stm32f103ZE开发板芯片
系统初始化文件
lib
目录-2
去固件库的【Libraries】文件夹下【如下图】把文件夹STM32F10x_StdPeriph_Driver
拷贝到自己建立的 lib
目录下
user
目录
这是添加完成后的user
目录:
这些文件在哪里找:
- main.c: 可以自己新建一个空的
main.c
文件,也可以去官方模板那里拷贝过来(官方模板在/Project/STM32F10x_StdPeriph_Template/
目录下, 下面第1幅图) - 最下面的三个
stm32f10x_conf.h
、stm32f10x_it.c
、stm32f10x_it.h
: 去官方模板拷贝 - 第二个stm32f10x.h: 在库的
Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x
路径下找(下面第2幅图)
注意
注意,以上步骤只是在磁盘上建立了这么一个目录结构,keil还不知道有这个工程,所以我们要在keil新建一个工程,然后把这个工程与存放在磁盘上的目录(还不能叫工程)进行关联,这样才能形成一个完整结构的工程。
打开mdk keil新建stm32工程
这个步骤是为了在keil中新建一个工程与存放在磁盘上的目录(还不能叫工程)进行关联映射,所以有2步:1-新建工程, 2-进行关联
新建工程
注意新建工程时,有几个步骤:
- 工程名,任意(根据自己的命名风格,不能有中文)
- 选择芯片,这里使用
STM32F103ZE
- 选择库,这里先不选,后面再选,直接跳过
点击查看具体步骤
点击 new uVision Project
自己命名,选择保存;
选择芯片 STM32F103ZE
选择库,直接跳过,后面再选
完成
完善工程结构
这里要把这个工程与磁盘上的目录和文件进行映射关联
选择工程管理,如下:
依次新建这几个目录:
- user: 存放用户代码文件
- startup: 存放启动文件
- CMSIS: 内核库文件
- StdPeriph_Driver: 外设库文件
分别往这几个目录添加文件:
user(从 /user/
目录下选择)
- main.c
- stm32f10x_it.c
startup(从 /lib/CMSIS/
目录下选择)
- startup_stm32f10x_hd.s(注意添加时没显示出来要选择 文件类型为 “
All files(*.*)
”)
CMSIS(从 /lib/CMSIS/
目录下选择)
- core_cm3.c
- system_stm32f10x.c
StdPeriph_Driver(从/lib/STM32F10x_StdPeriph_Driver/src/
目录下选择,可以选择全部,也可以只选择下面两个,根据自己需要,下面这2个一般都会用到,所以都添加进来)
- stm32f10x_rcc.c
- stm32f10x_gpio.c
添加完成如下:
注意
到此工程结构已经建立完成,可以在main.c文件下写代码了,但是现在还不能编译,因为编译需要的头文件还没包含进来,以及编译时的其它一些配置还没完成