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或者左上角的图标(如下所示)可进行编译。

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

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

相关推荐
GilgameshJSS2 小时前
STM32H743-ARM例程33-TOUCH
c语言·arm开发·stm32·单片机·嵌入式硬件
我先去打把游戏先8 小时前
ESP32开发指南(基于IDF):连接AWS,乐鑫官方esp-aws-iot-master例程实验、跑通
开发语言·笔记·单片机·物联网·学习·云计算·aws
hazy1k9 小时前
51单片机基础-继电器实验
stm32·单片机·嵌入式硬件·51单片机·1024程序员节
美好的事情总会发生11 小时前
FPGA的LVDS接口电压
嵌入式硬件·fpga开发·硬件工程·智能硬件
kaka❷❷12 小时前
STM32中 ESP8266 MQTT ModBus RS482 介绍
stm32·嵌入式硬件·智能路由器
hazy1k13 小时前
51单片机基础-TFT LCD 显示(ILI9341,SPI 4线)
c语言·stm32·单片机·嵌入式硬件·51单片机
brave and determined14 小时前
硬件-内存学习DAY14——3DXPoint:存储技术的革命与终结
嵌入式硬件·intel·3d xpoint·内存创新·内存设计·内存应用·内存新技术
D.....l16 小时前
STM32学习(MCU控制)(RS485 and ModBus)
stm32·单片机·学习
Jie_jiejiayou17 小时前
按键防抖 — 工业级标准实现总结(STM32)
c语言·stm32·按键消抖
物联网牛七七18 小时前
单片机中的中断
单片机·嵌入式硬件