1.下载官方固件库
在下面的官方网站可以下载到STM32的固件库,根据自己的单片机进行选择,我的是STM32F103C8T6,所以点击F1
https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html
然后点击Get latest下载最新版本的固件库
下载完毕之后得到固件库的压缩包,我们将它解压出来,我们只需要固件库中的部分文件
2.建立新工程
新建一个名为“STM32模板”的文件夹
打开Keil软件,新建一个工程
路径选择为我们刚才新建的文件夹,为了保证工程的通用性,命名为“Project”
芯片选择STM32F103C8T6,这个芯片包没有的话要去下载安装一个,如果是按照下面网址中Keil教程安装的Keil就已经有这个芯片包了
点击OK后我们的新工程就建立了
3.将固件库中需要用到的文件添加到工程文件夹中
打开下载好的固件库
打开路径STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
这些是我们的芯片启动文件,实际上我们只需要一个,但是F1系列的芯片有很多种类,为了模板通用性,我们全部复制
回到我们新建立的“STM32模板”文件夹当中,在这里我们可以看到已经建立好了的工程的文件,在这里我们需要再建立5个文件夹存放个人文件以及固件库中的文件
分别命名为Start、User、Library、System、Hardware
下面是五个文件夹存放的文件描述
Start:存放启动文件,启动文件是用汇编语言写的,里面包含了向量表、堆栈初始化、系统初始化、跳转到主函数等等数据。
User:存放用户文件,例如最重要的main.c文件
Library:存放固件库中封装好的驱动单片机外设的文件
System:存放系统文件,例如延时函数文件
Hardware:存放以后会用到的外接模块的文件,例如显示屏、按键等的驱动文件
建立完这5个文件夹后我们打开Start文件夹,将刚刚复制的文件粘贴在里面
再回到固件库中这个路径STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
复制下图中的三个文件到Start文件夹
再将固件库中STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport的两个文件复制到我们新建立的Start文件夹中
到这里我们的Start文件夹就配置好了,配置完毕我们的Start文件夹中应该有13个文件
下面我们配置Library文件夹
打开我们固件库中的路径STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver,将这里的两个文件夹里面的内容全部复制到我们新建立的Library文件夹中(注意是这两个文件夹里面的文件并不是这两个文件夹)
复制过来后如下图,一共46个文件
到这里我们的Library文件夹也配置好了
接下来配置User文件夹
打开User文件夹,建立一个名为main.c的文件
再打开固件库STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template路径,复制下图的三个文件到User文件夹
User文件夹配置好之后如下图所示
到这里我们的文件夹就配置完毕了
4.配置工作组
我们回到Keil软件中,点击下图位置管理组
新建5个组,命名为我们刚新建的五个文件夹
依次将组中的文件添加上,点击Start组,再点击右边的Add Files
打开Start文件夹,点击All Files,.s后缀的文件只需要选择一个,我的F103C8T6是md文件,具体的芯片用哪一个文件自行百度,其他的文件全部选中点击Add,一共六个文件,如图所示
Start组就添加好了
接下来添加Library组,操作类似,将Library文件夹中的所有文件添加到组中
接下来是配置User组,将User文件夹中的所有文件添加到组中
添加完毕后点击OK,到这里我们组配置就完毕了
6.添加宏定义与编译路径
点击工具栏中的魔术棒按钮
点击C/C++一栏
在Define一栏中输入USE_STDPERIPH_DRIVER,这个宏定义的意思就是使用标准库的意思,加入这个之后就可以调用ST封装的哪些驱动外设的函数了,不添加这一行只能操作寄存器来配置外设
再点击下面的Include Paths后面的三个点添加编译路径
把我们新建的五个文件夹路径都添加进去,如图所示
添加完了点击OK
7.编写main.c
点击User工作组前方的加号展开,双击main.c
接下来就可以进行编写了,输入以下内容
#include "stm32f10x.h" // Device header
int main(void)
{
while(1)
{
}
}
点击编译,显示0错误0警告(需要注意的是文件中的最后一行必须为空行,否则会报警告,如下图,第十行是空的)
8、建立成功
到这里我们的工程就建立成功了,可以在此基础之上配置你需要的一些外设、用户逻辑等等,创建的过程虽然繁琐,但是好在我们建立了这样一份基础工程,保存妥当,以后需要用到的时候直接复制这一份文件,再去编写其他的程序。
好了,到这里我们本次建立工程的文档就结束啦
本次笔记基于B站UP主江协科技STM32教程总结而来