STM32-使用固件库新建工程

参考链接: 【入门篇】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或者左上角的图标(如下所示)可进行编译。

编译结果如图所示,则新建工程成功。

仿真器配置那块我跳过了,反正接了仿真器以后还得再整。

相关推荐
清风6666661 小时前
基于单片机的多功能智能婴儿车设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
码咔吧咔1 小时前
STM32芯片简介,以及STM32的存储器映射是什么?
stm32·单片机·嵌入式硬件
别掩3 小时前
MOS防倒灌电路设计
单片机·嵌入式硬件
夜流冰3 小时前
EE - 电容电感电路中电流的变化
单片机·嵌入式硬件
橙露4 小时前
STM32中断配置全解析:从寄存器到HAL库的实战应用
stm32·单片机·嵌入式硬件
c-u-r-ry304 小时前
ZYNQ7 Processing System各个配置界面介绍
嵌入式硬件
idcardwang5 小时前
esp32s3-pwm介绍与stm32的不同原理
单片机·嵌入式硬件
码咔吧咔5 小时前
Flash 是什么?SRAM 是什么?它们的作用、特点、区别、在 STM32 中如何使用?
stm32·嵌入式硬件
LaoZhangGong1235 小时前
学习TCP/IP的第1步:ARP数据包
网络·stm32·学习·tcp/ip·以太网·arp·uip
三佛科技-187366133976 小时前
KP521405LGA低功耗5V1A易用高性能BUCK同步降压转换器芯片解析
单片机·嵌入式硬件