先奉上高清大图

C文件
1 Application/MDK-ARM
startup_stm32g474xx.s
STM32G474 系列微控制器的启动文件(Startup File)。它主要负责初始化硬件平台,设置堆栈指针,并调用 C 运行时环境的入口函数 main
。这个汇编语言文件是每个基于 STM32G474 的项目的重要组成部分,因为它定义了从复位后执行的第一条指令到进入用户代码主循环的过程。主要功能包含:
堆栈指针初始化,系统复位后首先设置的内容之一
设置中断向量表,其中存储了各种异常和中断服务例程(ISR)的地址。复位向量是其中最重要的一个,它指向了程序的入口点。
复位处理函数,这是系统上电或复位后执行的第一个函数。它通常用于初始化数据段、清零 BSS 段,并调用库初始化函数(如 SystemInit),然后跳转到 main
函数。
默认中断服务例程(ISR)
用户自定义堆栈配置
2 Application/User
main.c
HAL驱动初始化
系统时钟初始化,配置的时钟树数据在此生效
外设配置初始化
gpio.c等外设文件
用户对外设的配置
stm32g_4xx_hal_msp.c
MSP初始化函数,用于初始化和反初始化特定外设所需的硬件资源
stm32g4xx_hal_timebase_tim.c
用于配置一个基于硬件定时器的时间基准,以便为 HAL库提供时间延迟和超时管理功能。默认情况下,HAL 库使用 SysTick 定时器来实现这些功能,但在某些情况下(例如 SysTick 已被RTOS占用),需要使用一个通用定时器作为替代。
sem32g4xx_it.c
各种中断服务函数
若使用了RTOS,则systick pendsv hardfault等中断服务函数可能被接管,需要进行weak处理
3 Drivers/STM32G4xx_HAL_Driver
stm32g_4xx_hal.c
包含HAL_Init()HAL初始化函数
systick相关API
stm32g_4xx_hal_gpio.c等外设HAL文件
4 Drivers/CMSIS
system_stm32g4xx.c
更新系统时钟频率SystemCoreClock变量的值
H文件
…/Inc
gpio.h等外设头文件
c文件服务的API,无特殊内容
main.h
用户自定义外设名称
stm32g4xx_hal_conf.h
STM32G4 系列微控制器 HAL(Hardware Abstraction Layer,硬件抽象层)库配置文件。这个文件包含了 HAL 库的全局配置选项,允许用户根据具体的应用需求启用或禁用 HAL 模块,并调整各种配置参数,包含:
HAL各种模块的启用/禁用,影响后续头文件包含配置
内部、外部时钟频率的定义
系统配置:VDD大小、tick中断等级、是否使用RTOS等
断言功能是否启动
stm32g4xx_it.h
…/Drivers/STM32G4xx_HAL_Driver/Inc
stm32g4xx_hal.h
c文件服务的API,无特殊内容
stm32g4xx_hal_gpio.h等HAL外设驱动文件
c文件服务的API,无特殊内容
…/Drivers/STM32G4xx_HAL_Driver/Inc/Legacy
stm32_hal_legacy.h
用于向后兼容旧版本的 HAL 库。它包含了在新版本 HAL 库中可能已被更新、替换或删除的定义、函数声明和宏定义。使开发者更容易地将基于旧版 HAL 库编写的代码迁移到新版 HAL 库上,减少因 API 变化导致的代码重写工作量
…/Drivers/CMSIS/Device/ST/STM32G4xx/Include
stm32g474xx.h
所有外设的寄存器地址映射,并封装成结构体形式
寄存器位域操作宏定义
中断向量表
stm32g4xx.h
stm32g4系列芯片具体信号的选择,如g474
是否使用HAL库
基础类型定义,例如 使能/失能、成功/失败、设置/复位
基础宏定义,例如寄存器和位的读、写、清除等
system_stm32g4xx.h
c文件的服务API,无特殊内容
…/Drivers/CMSIS/Include
cmsis_armcc.h
包含了针对 ARM 编译器优化和兼容性所需的特定宏定义、属性声明和其他编译器相关的指令
cmsis_compiler.h
为不同的编译器环境提供统一的编译器抽象层,提供一种标准化的方式来处理不同编译器之间的差异,从而简化跨编译器环境下的开发工作
cmsis_version.h
定义当前 CMSIS 库的版本信息。它帮助开发者识别和管理所使用的 CMSIS 库的版本,确保不同组件之间的兼容性,并支持在需要时进行版本更新或回滚
core_cm4.h
定义了与 Cortex-M4 处理器相关的寄存器、指令集和异常处理等底层硬件接口
mpu_armv7.h
专门用于支持 ARMv7-M 架构(如 Cortex-M3、Cortex-M4 和 Cortex-M7)中的内存保护单元(Memory Protection Unit, MPU)
作者:xiangaler