STM32F103标准库工程模板创建

简介: stm32F103ZET6基于标准库的工程创建,网上资料大多提供移植好的工程模板,对于有经验的嵌入式软件开发者来说可以提高开发效率,可是对于初学者来说,忽略了很多移植细节,本文从无到有创建一个标准库的开发模板,帮助初学者,掌握stm系列基础工程模板创建。

STM32F103标准库工程模板创建

移植环境

  1. 本文所使用的移植环境如下:

    • 硬件环境为:STM32F103ZET6
    • 软件环境为: MDK5.23

开始移植

  1. 为了工程目录更加清晰,我们在本地电脑上新建一个“工程模板”文件夹,在它之下

再新建 6 个文件夹,具体如下:

名称 作用
Doc 用来存放程序说明的文件,由写程序的人添加
Libraries 存放的是库文件
Listing 存放编译器编译时候产生的 C/汇编/链接的列表清单
Output 存放编译产生的调试信息、 hex 文件、预览信息、封装库等
Project 用来存放工程
User 用户编写的驱动文件

1.png

在本地新建好文件夹后,把准备好的库文件(库文件下载路径)添加到相应的文件夹下:

名称 作用
Doc 工程说明.txt
Libraries CMSIS:里面放着跟 CM3 内核有关的库文件
Libraries STM32F10x_StdPeriph_Driver: STM32 外设库文件
Listing 暂时为空
Output 暂时为空
Project 暂时为空
User stm32f10x_conf.h:用来配置库的头文件
User main.c: main 函数文件
User stm32f10x_it.h stm32f10x_it.c:中断相关的函数都在这个文件编写,暂时为空

新建工程

打开 KEIL5,新建一个工程,工程名根据喜好命名,我这里取 Template(中文是模版的意思) ,保存在 Project\RVMDK(uv5)文件夹下。
2.png

一 选择 CPU 型号
这个根据你开发板使用的 CPU具体的型号来选择, M3旗舰版选 STM32F103ZE型号。
如果这里没有出现你想要的 CPU 型号,或者一个型号都没有,那么肯定是你的 KEIL5 没有
添加 device 库, KEIL5 不像 KEIL4 那样自带了很多 MCU 的型号, KEIL5 需要自己添加。

3.png

二 在线添加库文件
等下我们手动本地添加库文件,这里我们点击关掉在线添加,因为 keil 的服务器在国外,在线添加会非常慢。

4.png

三 添加组文件夹
在新建的工程中添加 5 个组文件夹,用来存放各种不同的文件,文件从本地建好的工程文件夹下获取,双击组文件夹就会出现添加文件的路径,然后选择文件即可

5.png

名称 存放的文件
STARTUP startup_stm32f10x_hd.s
CMSIS core_cm3.c、 system_stm32f10x.c
FWLB STM32F10x_StdPeriph_Driver\src 文件夹下的全部 C 文件,即固件库
USER 用户编写的文件:main.c: main 函数文件,暂时为空 stm32f10x_it.c:跟中断有关的函数都放这个文件,暂时为空
DOC Readme.txt:程序说明文件,用于说明程序的功能和注意事项等

头文件路径

文件名 文件路径 放置路径
stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template \template\User
core_cm3.c、core_cm3.c Libraries\CMSIS\CM3\CoreSupport \Libraries\CMSIS
system_stm32f10x.c、system_stm32f10x.h、stm32f10x.h 和startup文件夹 \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x \Libraries\CMSIS

14.png

13.png

四 添加文件
先把上面提到的文件从 ST标准库中复制到工程模版对应文件夹的目录下,然后在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件即可。

6.png

五 配置魔术棒选项卡

  • Target 中选中微库“Use MicroLib”,为的是在日后编写串口驱动的时候可以使用printf 函数。

7.png

  • 在 Output 选项卡中把输出文件夹定位到我们工程目录下的“output”文件夹,如果想在编译的过程中生成 hex 文件,那么那 Create HEX File 选项勾上。

8.png

  • 在 Listing 选项卡中把输出文件夹定位到我们工程目录下的“Listing”文件夹。

9.png

  • 在 C/C++选项卡中添加处理宏及编译器编译的时候查找的头文件路径。如果头文件路径添加有误,则编译的时候会报错找不到头文件。

在这个选项中添加宏,就相当于我们在文件中使用“#define”语句定义宏一样。在编译器中添加宏的好处就是,只要用了这个模版,就不用源文件中修改代码

  1. STM32F10X_HD 宏:为了告诉 STM32 标准库,我们使用的芯片类型是 STM32 型号是大容量的,使 STM32 标准库根据我们选定的芯片型号来配置。
  2. USE_STDPERIPH_DRIVER 宏:为了让 stm32f10x.h 包含 stm32f10x_conf.h 这个头文件

10.png

“Include Paths ”这里添加的是头文件的路径,如果编译的时候提示说找不到头文件,一般就是这里配置出了问题。你把头文件放到了哪个文件夹,就把该文件夹添加到这里即可。 (请使用图中的方法用文件浏览器去添加路径,不要直接手打路径,容易出错)

六 仿真器配置

11.png

12.png

15.png

到此模板创建完成,读者可以自行添加驱动进行测试

目录
相关文章
|
6月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
459 2
|
5月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
738 0
|
4月前
|
开发框架 C语言 开发者
STM32寄存器操作、模板构建
【8月更文挑战第23天】本文档介绍STM32中的寄存器操作方法与模板构建技巧。寄存器是STM32控制内外设的核心,通过直接读写特定内存地址来进行操作。以配置GPIO为例,需定位寄存器地址并写入适当值。文档还提供了一个基本的代码模板,包括包含头文件、时钟配置、外设初始化及主函数流程,帮助开发者快速搭建开发框架,并强调了参考手册的重要性以确保正确使用。
|
6月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
519 4
|
6月前
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
737 2
|
6月前
|
存储 数据采集 数据安全/隐私保护
使用STM32F103读取TF卡并模拟U盘:使用标准库实现
通过以上步骤,你可以实现用STM32F103将TF卡内容变成U盘进行读取。这种功能在数据采集、便携式存储设备等应用中非常有用。如果你有更多的需求,可以进一步扩展此项目,例如添加文件管理功能、加密存储等。希望这篇博客能帮到你,如果有任何问题,欢迎在评论区留言讨论!
243 1
|
6月前
|
开发者
【经典案例】使用HAL库配置STM32F407的SPI外设
在嵌入式系统开发中,STM32F407是一款广泛应用的微控制器,而SPI(Serial Peripheral Interface)是一种常用的通信接口。本文将详细介绍如何使用STM32的硬件抽象层(HAL)库配置STM32F407的SPI外设,并提供完整的代码示例。
594 1
|
6月前
|
传感器 数据采集 人工智能
【STM32+k210项目】基于AI技术智能语音台灯的设计(完整工程资料源码)
【STM32+k210项目】基于AI技术智能语音台灯的设计(完整工程资料源码)
256 1
|
5月前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
176 0