Keil创建自定义的STM32标准库工程

注:以下工程创建将以STM32F103ZET6为例

1 下载需要的资料包

1.1 下载 Keil 的 STM32F103 芯片支持包

1.1.1 手动下载安装包

Keil官网:https://www.keil.com/

(1)进入官网,点击 Download。

(2)选择 Product Downloads,然后选择 MDK-Arm,进入之后选择 Device List。


(3)直接输入芯片名称查找芯片支持包。

或选择供应商和内核查找芯片支持包


(4)下载支持包 点击 STM32F1xx_DFP,进入下载界面,点击 Download 下面的支持包。


下载完成之后,后续使用 Keil 的 Pack Installer 导入到项目中。

1.1.2 使用 Keil 的 Pack Installer 下载

点击如下图图标打开 Pack Installer ,

左侧 Device 找到 All Devices - STMicroelectronics - STM32F1 Series - STM32F103 - STM32F103ZE,右侧 Packs 窗口下找到 Keil::STM32F1xx_DFP, 点击右侧的 Install 下载。

1.2 下载STM32F103标准外设库

ST官网: https://www.st.com/content/st_com/en.html

选择 Tools&Software,

选择 STM32 embedded software,

选择 STM32 Standard Peripheral Labraries,

选择 F1 系列,

点击 Get latest 进行下载外设标准库。

2 创建工程文件夹

Core:存放从SDK中抽取的部分可能会修改的核心文件;

Driver:存放用户编写的外设驱动;

User:存放用户函数文件

Project:存放Keil工程文件,二进制目标文件;

SDK:存放CMSIS和HAL库(或标准库)

Clean.bat:清理Project里的Keil生成的工程文件;

Readme.txt:该工程的说明信息。

3 拷贝相关文件到工程目录

3.1 解压标准外设库包

3.2 拷贝相关文件

(1)拷贝启动文件

将 STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 目录下的 startup_stm32f10x_hd.s 拷贝到 00_STM32_Demo\Core 目录下。

(2)拷贝系统初始化文件和外设寄存器描述文件

将 STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 目录下的 {stm32f10x.h, system_stm32f10x.c, system_stm32f10x.h} 拷贝到 00_STM32_Demo\Core 目录下。

(3)拷贝内核寄存器描述文件

将 STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport\ 目录下的 {core_cm3.c, core_cm3.h} 拷贝到 00_STM32_Demo\Core 目录下。

4 Keil 创建项目工程

(1)新建项目工程。

Project - New uVision Project

找到对应的芯片类型。


(2)创建分组

(3)将本地本件添加到工程分组

添加文件之后需要更改文件类型,否则会出现下面的告警。

c 复制代码
Rebuild started: Project: STM32_Demo
*** Using Compiler 'V6.14.1', folder: 'D:\Keil_v5\Core\ARM\ARMCLANG\Bin'
Rebuild target 'Target 1'
FCARM - Output Name not specified, please check 'Options for Target - Utilities'
Target not created.
Build Time Elapsed:  00:00:00

修改文件类型方法:

选中文件后右键,

File Type 更改为对应的文件类型,如下:

其他 .s 或 .c 文件同样设置。

注意:.h 文件添加到分组后不能设置为 "C Source File" 类型,可以设置为 "Text Document file" ,或者直接不要把 .h 文件添加到分组中,否则编译报错

报错信息如下:

(4)添加设备型号宏定义 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/92c26dbe25904d259bd7a45493471119.png)

(5)配置时钟和编译器版本

开发板使用8M外部晶振。

只能选择 version 5 的版本,不然编译报错,version 6版本有些语法不支持。

(6)配置目标文件输出路径和 listing 文件存放路径

(7)配置生成 hex 文件

(8)配置头文件路径和语法版本

(9)配置文件的编码格式

经以上步骤,配置完成。点击编译按钮开始编译代码,结果如下:

到此,以上可作为寄存器版工程

(10)拷贝标准库

将 STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver\ 目录下的 {src, inc} 拷贝到 00_STM32_Demo\Driver\StdLib\ 目录下。

将 STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h 拷贝到 00_STM32_Demo\Core 目录下。

将 标准库源文件添加到 Driver/StdLib Group。注意:下图文件类型要选择 C Source file(*.c)。

添加一个使用 标准外设库 的宏 " USE_STDPERIPH_DRIVER"。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3e62ecb490a844939c03ec176f770367.png)
最后再重新编译一下工程,0错误,0告警。

标准库工程模板创建完毕。

相关推荐
光子物联单片机21 小时前
STM32G474单片机开发入门(一)STM32G474RET6单片机详解
stm32·单片机·嵌入式硬件·mcu
zhuxinmingde21 小时前
电机控制-PMSM无感FOC控制(五)相电流检测及重构 — 单电阻采样
单片机·嵌入式硬件·重构
眰恦ゞLYF21 小时前
嵌入式硬件——基于IMX6ULL的UART(通用异步收发传输器)
单片机·嵌入式硬件·uart·imx6ull
A9better21 小时前
嵌入式开发学习日志32——stm32之PWM
stm32·单片机·嵌入式硬件·学习
眰恦ゞLYF1 天前
嵌入式硬件——基于IMX6ULL的GPT(通用定时器)实现
单片机·嵌入式硬件·gpt·imx6ull
充哥单片机设计1 天前
【STM32项目开源】基于STM32的智能老人拐杖
stm32·单片机·嵌入式硬件
10001hours1 天前
(基于江协科技)51单片机入门:6.串口
科技·嵌入式硬件·51单片机
眰恦ゞLYF1 天前
嵌入式硬件——基于IMX6ULL的I2C实现
嵌入式硬件·i2c
常州晟凯电子科技2 天前
君正T32开发笔记之固件烧写
人工智能·笔记·嵌入式硬件·物联网