抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

工程结构建立

点击跳转到工程查看

初始化工程目录结构

首先创建一个文件夹test, 用于存放该工程,然后在该文件夹下创建以下几个文件夹(目的是让工程管理起来更有条理):

  • lib: 用于存放库文件(像Libraries、Lib等文件名字也是可以的,根据自己的风格,最好是能"见名知义")
    • CMSIS: 存放内核核心库文件
    • STM32F10x_StdPeriph_Driver: 是STM32Fl0x标准外设驱动库函数目录,存放STM32F10x微控制器的外设驱动(这个文件夹可以不建立,等下直接把库的拷贝过来)
  • obj: 用于存放程序编译输出的各种文件
  • user: 用于存放main.c等用户自己的文件

添加相关文件

固件库说明

点击展开

首先要去官网或其他渠道下载STM32固件库,这个库包含了我们创建要用到的所有文件,其包含的文件如下

image-20210910194646565

【Libraries】文件夹存放STM32F10x开发要用到的各种库函数和启动文件,包括CMSISSTM32F10x_StdPeriph_Driver两个子文件夹:

  1. 【CMSIS】文件夹是内核库核心文件夹,包括CoreSupport和DeviceSupport等两个文件夹

    CoreSupport文件夹包括Cortcx-M3内核通用源文件core_cm3.c和头文件core_cm3.h

  2. 【DeviceSupport】文件夹STM32F0x头文件stm32f10x.h和系统初始化文件system_stm32f10x.c【STM32F10x_StdPeriph_Driver】文件夹是STM32Fl0x标准外设驱动库函数目录,包括了所有STM32F10x微控制器的外设驱动

image-20210910195021702

【Project】文件夹对应STM32F10x标准外设库体系架构中的用户层,用来存放ST官方提供的STM32F10x工程模板和外设驱动示例

【Utilities】文件夹用于存放ST官方评估板的BSP(Board Support Package, 板级支持包)和额外的第三方固件

添加库文件到自己的模板

lib目录-1

在库文件找到下面的文件拷贝到自己刚建立的lib/CMSIS目录

添加完成后 lib/CMSIS目录是这样:

image-20210910201435838

这些文件去哪里找:在库文件的 【Libraries】目录下

内核通用源文件

image-20210910200517197

启动文件,只需要红框圈起来的那个,对应 stm32f103ZE开发板芯片

image-20210910200757380

系统初始化文件

image-20210910201253535

lib目录-2

去固件库的【Libraries】文件夹下【如下图】把文件夹STM32F10x_StdPeriph_Driver拷贝到自己建立的 lib 目录下

image-20210910201957385

user目录

这是添加完成后的user目录:

image-20210910202442964

这些文件在哪里找:

  • main.c: 可以自己新建一个空的main.c文件,也可以去官方模板那里拷贝过来(官方模板在 /Project/STM32F10x_StdPeriph_Template/目录下, 下面第1幅图)
  • 最下面的三个stm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h: 去官方模板拷贝
  • 第二个stm32f10x.h: 在库的Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x路径下找(下面第2幅图)

image-20210910202705273

image-20210910203037259

注意

注意,以上步骤只是在磁盘上建立了这么一个目录结构,keil还不知道有这个工程,所以我们要在keil新建一个工程,然后把这个工程与存放在磁盘上的目录(还不能叫工程)进行关联,这样才能形成一个完整结构的工程。

打开mdk keil新建stm32工程

这个步骤是为了在keil中新建一个工程与存放在磁盘上的目录(还不能叫工程)进行关联映射,所以有2步:1-新建工程, 2-进行关联

新建工程

注意新建工程时,有几个步骤:

  1. 工程名,任意(根据自己的命名风格,不能有中文)
  2. 选择芯片,这里使用 STM32F103ZE
  3. 选择库,这里先不选,后面再选,直接跳过
点击查看具体步骤

点击 new uVision Project

image-20210910210845401

自己命名,选择保存;

选择芯片 STM32F103ZE

image-20210910211314033

选择库,直接跳过,后面再选

image-20210910211418672

完成

image-20210910211508362

完善工程结构

这里要把这个工程与磁盘上的目录和文件进行映射关联

选择工程管理,如下:

image-20210910212307092

依次新建这几个目录:

  • user: 存放用户代码文件
  • startup: 存放启动文件
  • CMSIS: 内核库文件
  • StdPeriph_Driver: 外设库文件

image-20210910212703182

分别往这几个目录添加文件:

image-20210910214210061

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

添加完成如下:

image-20210910214412880

注意

到此工程结构已经建立完成,可以在main.c文件下写代码了,但是现在还不能编译,因为编译需要的头文件还没包含进来,以及编译时的其它一些配置还没完成

编译配置

选择这个魔法棒

image-20210910215321021

配置Target项

image-20210910215245013

配置output项

image-20210910220000653

配置 listing项

image-20210910220055189

配置 C/C++ 项,目的是为了把头文件添加进来

下图的第2步添加的是:USE_STDPERIPH_DRIVER,STM32F10X_HD(注意中间有个英文逗号),表示使用外部库函数驱动

image-20210910220625228

配置Debug项:ARM仿真器选项配置(手中有开发板可以先通过ARM仿真器连接电脑)

image-20210910221520551

下载配置(在上一步的Debugger配置中:Debugger->Settings->FlashDownload)

image-20210910221912505

注意

到此所有配置完成,选择ok,可以愉快的写代码了

测试

打开main.c文件,删除原有代码(如果有的话),添加如下代码:

1
2
3
4
5
6
7
8
9
#include "stm32f10x.h"

int main(){

while(1){

}
}

编译运行,没有报错,完美。。。。

image-20210910222416127

评论