文章目录
- STM32的开发方式
- 建立基于库函数的工程
- 建立工程的具体步骤
- 具体程序举例
- 工程架构
本篇介绍如何建立一个STM32工程
STM32工程结构比较复杂,需要用到的文件很多,并且程序代码也都是建立在工程结构的基础之上,所以学习如何新建一个STM32工程也是至关重要的
STM32的开发方式
目前STM32的开发方式主要有
-
基于寄存器的方式
和51类似,是用程序直接配置寄存器来实现相应的功能
特点:最底层、最直接、效率更高
但是由于STM32结构复杂、寄存器太多,所以不推荐使用基于寄存器的方式
-
基于库函数的方式(推荐使用)
使用 ST 官方提供的封装好的函数,通过调用这些函数来间接地配置寄存器
特点:既能满足对寄存器的配置,也能提高开发效率(对开发人员友好)
-
基于HAL库的方式
用图形化界面快速配置STM32,隐藏了底层逻辑(暂时不推荐,可以等熟悉底层逻辑之后使用)
建立基于库函数的工程
使用基于库函数的方式对STM32进行开发需要准备一个STM32库函数的压缩包
压缩包:STM32F10x_StdPeriph_Lib_V3.5.0.zip
链接: https://pan.baidu.com/s/15TGR31RRQXaLphke6DumGQ?pwd=276k
提取码: 276k
解压之后文件中就是库函数的文件夹目录了
建立工程的具体步骤
-
Step1:建立一个存放工程的文件夹
选一个合适的地方,建立一个名为STM32Project的文件夹,用于存放以后建立的STM32工程(叫其他名字也可以,最好见名知意且是英文)
-
Step2:在Keil5中新建工程
打开Kile5,点击 Project → New μVision Project… → 选择STM32Project文件夹 → 在STM32Project文件夹中新建一个文件夹用于存放本次工程 → 在该文件夹中给工程取名 → ……
详细步骤可参考 《STM32入门教程-2023版 细致讲解 中文字幕》教程视频 P4
-
Step3:给工程添加必要文件
-
STM32的启动文件(STM32的程序就是从启动文件开始执行的)
启动文件要根据型号来选择
-
STM32外设寄存器描述文件(用于描述STM32有哪些寄存器和它对应的地址)
-
STM32时钟配置文件
-
STM32内核寄存器描述文件(STM32分内核和内核外围设备)
这些文件在压缩包中都有,具体如何将这些文件添加到Keil5中请参考 《STM32入门教程-2023版 细致讲解 中文字幕》教程视频 P4
-
STM32库函数文件
-
STM32标准外设驱动
-
库函数的头文件
-
其他必要文件
-
-
-
Step4:在工程选项中添加文件夹的头文件路径
魔术棒(Option for Target) → C/C++ → Include Path → ……
-
Step5:新建一个main函数
-
Step6:编译 & 下载
具体程序举例
使用库函数(间接配置寄存器)实现点灯操作
-
首先定义使能时钟,使用库函数中的 RCC_APB2PeriphClockCmd 函数开启时钟(不清楚函数的使用方法时,可以右击函数查看函数简介和参数说明)
【建议先了解一下什么是系统时钟和RCC,可以先看看我另外一篇博客 STM32系统时钟RCC】
我们选择 RCC_APB2Periph_GPIOC 作为第一个参数,ENABLE 作为第二个参数
-
配置端口模式:使用 GPIO_Init 函数
两个参数,第一个是选择那个GPIO,第二个是参数的结构体
我们选择 GPIOC 作为第一个参数,GPIO_InitStructure 作为第二个参数(注意在使用 GPIO_InitStructure 作为函数参数之前要先定义该结构体及其相应参数)
(GPIO参数不知道怎么配置同样可以右键查看参数说明)
-
设置指定端口的高低电平来控制LED灯:使用 GPIO_SetBits / GPIO_ResetBits
- LED灯亮
- LED灯灭
工程架构
STM32 专栏文章均参考 《STM32入门教程-2023版 细致讲解 中文字幕》教程视频