前言
视频教程链接:逻辑最清晰的STM32F1/F4标准库工程创建_哔哩哔哩_bilibili
本文最后的STM32F411CEU6标准库工程,可以直接拿走使用:
链接:https://pan.baidu.com/s/1l5BB2Cvwia67J1cpH7rRbw
提取码:onca
一、前提知识
在别人的STM32工程中,我们总是能见到各种各样的文件,比如startup_stm32f10x_hd.s、core_cm3.c、core_cm3.h、stm32f10x_it.c......我们可能不知道他们都是什么,为什么需要他们,要这么多文件干嘛?即便不知道,但可能也不影响我们后续开发,但是如果我们能对他们有一个较为清晰的认识,有助于我们更好的掌控我们自己的工程。
现在以STM32F1系列为例,汇总出这些文件的大致作用如下:
其具体介绍如下,如果不想看具体介绍,只看上面这张图就行
A.固件库所需文件
1.startup_stm32f10x_hd.s文件介绍
startup_stm32f10x_hd.s 文件是 STM32F10x 系列微控制器的启动代码文件。它是启动项目时运行的第一个代码,用于设置处理器的初始状态,并准备应用程序的运行环境。这个文件通常用汇编语言编写,主要用于初始化堆栈、设置中断向量表,并启动 C 程序的主函数 main()。
startup_stm32f10x_hd.s 文件是 不可或缺 的,它在系统复位后首先执行,负责为主程序设置运行环境。因此,开发 STM32 应用程序时,通常需要包含这个启动文件,否则处理器将无法正确运行用户代码。
2.core_cm3.c与core_cm3.h 的介绍
在 STM32 单片机的开发中,core_cm3.c 是与 Cortex-M3 核心处理器相关的文件,它主要提供了一些与处理器核心功能(而非外设)相关的底层代码和功能。该文件通常属于 CMSIS库的一部分。CMSIS 是由 ARM 提供的一个标准化的硬件抽象层,用于简化 Cortex-M 系列处理器的开发。
core_cm3.c 是用于 Cortex-M3 内核的底层支持文件,主要负责处理器的核心功能(如中断管理、时钟控制、寄存器访问等)的实现。它是 CMSIS 库的一部分,通过抽象层的接口,简化了开发者与 Cortex-M3 内核硬件直接交互的复杂性。通过使用该文件中的函数和功能,开发者可以更加轻松地控制 Cortex-M3 核心的各种功能,而无需直接操作底层寄存器。
并非所有STM32系列单片机都是Cortex-M3 内核,其具体对应如下表所示
STM32 系列 | 内核类型 | 应用领域 |
---|---|---|
STM32F0 | Cortex-M0 | 入门级应用 |
STM32G0 | Cortex-M0+ | 提升版的入门级应用 |
STM32L0 | Cortex-M0+ | 低功耗应用 |
STM32F1 | Cortex-M3 | 稳定、通用 |
STM32F3 | Cortex-M4 | 带有模拟前端的片上资源 |
STM32F4 | Cortex-M4 | 高性能工业、物联网 |
STM32L4 | Cortex-M4 | 低功耗与高性能的结合 |
STM32F7 | Cortex-M7 | 高性能计算 |
STM32H7 | Cortex-M7 | 更高性能的复杂控制系统 |
STM32L5 | Cortex-M33 | 安全和低功耗 IoT |
STM32U5 | Cortex-M33 | 超低功耗和高安全性 |
STM32MP1 | Cortex-A7 / M4 | Linux 与 RTOS 的复杂系统 |
3.stm32f10x.h的介绍
stm32f10x.h 是一个为 STM32F1 系列微控制器提供的头文件,包含了外设寄存器定义、外设配置和控制宏,方便开发者访问和操作硬件资源。
4.system_stm32f10x.c和system_stm32f10x.h的介绍
这两个文件负责 STM32F1 系统时钟和基本系统设置的初始化,通过配置系统时钟、更新主频变量以及初始化关键寄存器,帮助开发者在系统上电或复位时快速设置系统环境,使得外设和应用可以在准确的时钟频率下运行。
B.标准库所需文件
1.stm32f10x_it.c和stm32f10x_it.h的介绍
这两个文件主要负责 STM32F1 系列微控制器的中断服务函数定义和实现,帮助开发者处理各种外设中断和系统异常。通过这些文件,开发者可以在不同中断触发时快速响应特定事件。
是标准库的一部分,因此需要配合标准库一起使用
2.stm32f10x_conf.h的介绍
是 STM32 标准外设库(Standard Peripheral Library)中的一个配置文