文章目录
引言
本专栏基于bilibili的《正点原子》所编写,微控制器型号是:stm32f103zet6,以下文件都根据正点原子官方发出来的。
一、STM32
1.1.STM32的介绍
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器,常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。
1.2.命名规则
本实验所用的控制器解读为:(STM32)32位的MCU/MPU;(F)基础型;(103)STM32基础型;(z)有144个引脚;(e)闪存容量为512KB;(t)封装为QFP;(6)温度范围:-40℃ ~ +85℃。
1.3.引脚分布
一共144个引脚:
二、新建工程前的准备工作
2.1.下载相关STM32Cube官方固件包
- ST官方搜索STMCube
- 开发板A盘资料:A盘->8,STM32参考资料->1,STM32CubeXX固件包
2.2.搭建开发环境
使用Keil uVision5搭建工程
2.3.新建Hal库版本MDK工程步骤
2.3.1.新建工程文件夹
在桌面新建工程文件夹,该文件夹可以随便命名,在该文件夹里面另外新建5个文件夹:D/M/O/P/U:
下面是各个文件夹该存放什么东西:
-
Drivers文件夹里面该有的文件,有一些需要在STM32CubeF1固件包里复制:
其中,在固件包复制了STM32F1xx_HAL_Driver,被选中的都是不要的,可以删除的,用不上的文件会影响编译速度:
-
Middlewares文件夹:存放正点原子和其他第三方提供的中间层代码(组件/Lib等),如:USMART、MALLCO、TEXT、FATFS、USB、LWIP、各种OS、各种GUI等。
-
Output文件夹:存放编译器编译工程输出的中间文件,如:.hex、.bin、.o文件等。
-
Projects文件夹:存放编译器(MDK、IAR等)工程文件,本专栏主要用MDK,为了方便区分,因此在该文件夹下新建:MDK-ARM文件夹,用于存放MDK的工程文件。
-
User文件夹:存放用户编写的代码,如:Hal库用户配置文件、main.c文件、中断处理文件,以及分散加载文件等,下图是放User文件夹里的必要文件:
2.3.2.新建一个工程框架
以下操作均在Keil内完成:
-
新建工程
例如:打开Keil后点击上面Project,再点击第一个新建工程
-
保存工程
选择存放的位置,存放在上述配置好的文件夹的Project->MDK-ARM里面,并起一个合适的名字:
-
选择主控型号
选择与芯片号相同的型号:
-
删除文件夹
删除下图两个,因为之后会再次生成并放在Output文件夹里:
2.3.3.添加文件
-
设置工程名和分组名:点击上面三个正方体重叠的图案,按照下图添加文件,并更改名字:
-
添加启动文件
继续点开小方块,在Startup的文件夹里添加启动文件,找启动文件如下图所示:
-
添加User源码
继续点开小方块,在User文件夹里添加下图两个文件:
-
添加SYSTEM源码
继续点开小方块,在SYSTEM文件夹里,添加下面三个文件夹中的.c文件:
-
添加STM32F1xx_HAL_Driver源码
继续点开小方块,在STM32F1xx_HAL_Driver文件夹里,添加所需要的文件,如果全部都添加上去,会导致编译速度减慢:
2.3.4.魔术棒设置
-
Target选项卡
设置使用的编译器版本、外部晶振频率:
-
Output选项卡
设置Object输出文件夹,设置在Output文件夹里、生成.hex文件、输出浏览信息:
-
Listing选项卡
设置Listing输出文件夹,输出在Output文件夹里:
-
C/C++选项卡
设置全局宏定义、优化等级、C99 Mode、设置头文件包含路径:
-
Debug选项卡
设置使用的仿真器类型、选择的下载接口等:
-
Utilities选项卡
设置下载功能、下载算法、下载算法起始地址和大小等:
2.3.5.添加main.c,并编写代码
三、小细节
设置头文件包含路径的时候,一开始会有…\,是因为从放Keil5的工程软件里开始算。
例如:直接包含Drivers路径,在代码里引用该路径里的头文件,需要这样做:. /
代表Drivers文件夹,再往下就是SYSTEM,再往下就是delay文件夹,delay.h文件就在delay文件夹里。