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告警。

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

相关推荐
BW.SU2 小时前
单片机 + 图像处理芯片 + TFT彩屏 触摸开关控件 v1.2
单片机·人机交互·ra8889·开关控件·触摸屏设计
双叶8362 小时前
(51单片机)点阵屏LED显示图片(点阵屏LED教程)(74Hc595教程)
c语言·开发语言·单片机·嵌入式硬件·51单片机
深圳市青牛科技实业有限公司2 小时前
D3502C:一款高性能降压转换器的技术解析,可替代U3502C采用ESOP8封装
单片机·嵌入式硬件·快充·扫地机器人吸尘·筋膜枪电机·驱动轮电机
顾念`3 小时前
履带小车+六轴机械臂(2)
单片机·嵌入式硬件
努力创造奇迹3 小时前
STM32 HAL库 ADC+TIM+DMA 3路 1S采样一次电压
stm32·单片机·嵌入式硬件
leoFY1234 小时前
STM32 BOOT设置,bootloader,死锁使用方法
stm32·单片机·嵌入式硬件
czhaii4 小时前
单片机任意普通IO引脚使用定时器扩展外部中断的巧妙方法
单片机·嵌入式硬件
二块烧肉6 小时前
STM32 认识STM32
stm32·单片机·嵌入式硬件
Born_t0ward7 小时前
基于STM32 的实时FFT处理(Matlab+MDK5)
stm32·嵌入式硬件·matlab·mdk5·快速fft
程序猿阿伟7 小时前
《鸿蒙软总线:基于UDP的数据传输奥秘与优势》
单片机·udp·harmonyos