【STM32学习笔记3】stm32标准库工程模板搭建
2024-12-17 来源:jianshu
前言
本系列文章统一围绕STM32F103C8T6最小系统开发板进行记录,如涉及其他开发板将会特别说明。
新建标准库工程目录
工程目录创建
一个标准的stm32库工程目录包含以下内容:

标准stm32库工程目录
其中:
Doc:用来存放程序说明的文件,由写程序的人添加
Libraries:包含两个子目录CMSIS和FWlib。
CMSIS:存放与Cortex-M3内核相关的文件,如STM32的启动文件,内核文件等。
FWlib:存放stm32外设驱动文件,包含inc(头文件)和src(源文件)两个子目录。
Listing:存放编译器编译时候产生的C/汇编/链接的列表清单。
Output:存放编译产生的调试信息、hex 文件、预览信息、封装库等。
Project:用于存放工程文件。
User:用于存放的main.c、stm32f10x.h 头文件、 stm32f10x_conf.h配置文件、stm32f10x_it.c和stm32f10x_it.h中断函数文件,以及用户编写的驱动文件。
固件库文件移植
CMSIS
在stm32官方固件库中找到下列文件:

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm
此处应根据开发板型号进行选择,如STM32F103C8T6为中等型号产品,故选择startup_stm32f10x_md.s文件。

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport
将上述文件拷贝至CMSIS目录下:

stm32_templateLibrariesCMSIS
FWlib
将stm32外设驱动文件拷贝至FWlib目录下:

STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver
stm32_templateLibrariesFWlib
User
将下列文件拷贝至User目录下:

STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template

stm32_templateUser
至此,标准库工程模板已完成搭建。

标准库工程文件结构
新建工程
在Keil5中新建一个工程,保存在上述Project/目录下。
1.选择设备型号
根据芯片型号选择对应的选项:

芯片型号选择
2. 创建组文件夹并添加文件
点击上方Manage Project items按钮,如图所示创建组文件夹:

创建组文件夹
找到对应文件,并将其添加至对应的文件夹下:
| 目录名 | 存放的文件 | 添加文件路径 |
|---|---|---|
| STARTUP | startup_stm32f10x_md.s | stm32_templateLibrariesCMSIS |
| CMSIS | 与Cortex-M3内核相关的文件 | stm32_templateLibrariesCMSIS |
| FWlib | 系统外设驱动文件(源文件) | stm32_templateLibrariesFWlibsrc |
| USER | main.c,stm32f10x_it.c | stm32_templateUser |
| PERIPH | 外设驱动文件(如LED、BEEP等外设) | 暂无 |
| BSP | 板级支持包驱动文件 | 暂无 |
| DOC | 工程说明文件 | stm32_templateDoc |
3. “魔法棒”配置
点击“魔法棒”按钮,进行如下配置:

添加宏定义USE_STDPERIPH_DRIVER
这里的宏配置对全局生效
image.png
只有USE_STDPERIPH_DRIVER宏被定义了之后,才会在stm32f10x.h文件中包含stm32f10x_conf.h文件,进而包含系统外设驱动文件的头文件,如下图所示:

stm32f10x.h

stm32f10x_conf.h
添加头文件路径
此外,我们还需要在此处将工程所使用到的头文件的绝对路径添加进来,包括用户自己写的头文件:
image.png

添加头文件路径
MicroLIB选项

MicroLIB
MicroLIB是KEIL自带的简易库
如使用printf函数,会从串口1输出字符串,直接默认定向到串口1
MicroLIB是缺省C库的备选库。它用于必须在极少量内存环境下运行的深层嵌入式应用程序。这些应用程序不在操作系统中运行
MicroLIB不会尝试成为符合标准的ISOC库,MicroLIB进行了高度优化以使代码变得很小。它的功能比缺省C库少,并且根本不具备某些ISOC特性。某些库函数的运行速度也比较慢,例如memcpy()
输出hex可执行文件
如果需要通过串口ISP方式烧录程序,则需要指定hex可执行文件生成路径为Output文件夹,并勾选“Create HEX File”选项。
image.png
添加链接路径
指定链接路径为Listing文件夹。
添加链接路径
资源
stm32官方固件库:https://pan.baidu.com/s/1B0tswmMOoqYDUClkc3ZG2g 提取码:9rgh
- 意法半导体中国本地造STM32微控制器启动规模量产
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 基于机智云与STM32的智能拐杖安全监测系统在养老物联网中的应用
- 内置全栈安全,一站式满足CRA法案与IEC 62443标准——米尔STM32MP257核心板
- 如何用 STM32 FLASH 实现等效 100 万次擦写的 EEPROM 功能?
- 实战解析:通过一个小项目掌握STM32所有外设
- STM32学了两年半,却还是不会做项目
- 意法半导体推出最新STM32MP21微处理器,兼具高性价比、低功耗、高灵活性
- 基于STM32的矿井作业环境监测系统设计与实现
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




