参考链接: 【入门篇】11-新建工程---固件库版本(初学者必须认认真真看)_哔哩哔哩_bilibili
使用的MCU是STM32F103ZET6 。
这篇参考的是野火的资料,可以在"野火大学堂"或者它的论坛上下载。(我通常是野火和正点原子的资料混着看的T_T)
一、本地工程文件夹
首先,新建一个工程文件夹,如Template-Fwlib ,并在此文件夹下新建4个文件夹,分别为Doc,Libraries,Project,User 。
其中,Doc中存放的是类似于readme之类的说明文件;Project暂时为空,它将在Keil5新建项目时用到。
Libraries文件夹
Libraries中的内容如下图所示:
其中,STM32F10x_StdPeriph_Driver就是野火的资料包中【固件库】文件夹里的对应内容直接复制来的,路径如下。
【固件库】STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
CMSIS文件夹中包含以下下图所示内容,且均可以在下述【固件库】中的CMSIS路径中找到,包括startup文件夹,直接复制即可:
【固件库】STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS
User文件夹
User文件夹中存放的是
除了main.c,另外3个文件都是从以下路径中复制过来的。
【固件库】STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
main.c是自己新建的一个源文件,记得要先写个空main入口放着,不然后面编译会报"找不到main函数"的错误。
#include"stm32f10x.h"
int main(void)
{
}
二、Keil5新建工程
以下内容大部分摘自野火的《零死角玩转STM32---F103霸道_V2》这本书。
Step1: 打开 KEIL5,新建一个工程,工程名根据喜好命名,保存在刚刚创建的Project文件夹下。新建了工程之后要选择MCU的型号,这里选的是STM32F103ZE。
Step2: 添加组文件夹及文件,添加结果如下图所示,文件在刚刚整的那几个本地工程文件夹下全能找到;
STARTUP 内容出自 Template-Fwlib\Libraries\CMSIS\startup
CMSIS 内容出自 Template-Fwlib\Libraries\CMSIS
FWLIB 内容出自 Template-Fwlib\Libraries\STM32F10x_StdPeriph_Driver\src
USER 内容出自 Template-Fwlib\User
DOC 内容出自 Template-Fwlib\Doc
配置魔术棒选项卡(Options for Target)
(1) Target 中选中微库" Use MicroLib",为的是在日后编写串口驱动的时候可以使用printf 函数。
(2) 在 Output 选项卡中把输出文件夹定位到我们工程目录下的"output"文件夹 (这步我没做,因为我没有新建output文件夹,所以保持的默认的), 如果想在编译的过程中生成 hex 文件(没记错的话这是用USB转串口烧录单片机的时候用的),就把 Create HEX File 选项勾上。
(3) 在 Listing 选项卡中把输出文件夹定位到我们工程目录下的"Listing"文件夹。 (这步我没做,因为我没有新建Listing文件夹,所以保持的默认的)
(4) 在 C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径。如果头文件路径添加有误,则编译的时候会报错找不到头文件。
注释:Include Paths中设置头文件(如stm32f10x.h)的路径,否则Keil5默认会去软件安装路径下找头文件。
(添加结果如下图所示)
在Define里要添加STM32F10X_HD和USE_STDPERIPH_DRIVER两个宏:
STM32F10X_HD 宏:为了告诉 STM32 标准库,我们使用的芯片类型是 STM32型号是大容量的,使STM32标准库根据我们选定的芯片型号来配置;
USE_STDPERIPH_DRIVER 宏:为了让 stm32f10x.h 包含 stm32f10x_conf.h 这个头文件。
这样就新建完一个新的工程了,按F7或者左上角的图标(如下所示)可进行编译。
编译结果如图所示,则新建工程成功。
仿真器配置那块我跳过了,反正接了仿真器以后还得再整。