固件库> tree
Folder PATH listing
Volume serial number is C672-F97B
C:.
└───STM32F10x_StdPeriph_Lib_V3.5.0
└───STM32F10x_StdPeriph_Lib_V3.5.0
├───Libraries
│ ├───CMSIS
│ │ ├───CM3
│ │ │ ├───CoreSupport
│ │ │ └───DeviceSupport
│ │ │ └───ST
│ │ │ └───STM32F10x
│ │ │ └───startup
│ │ │ ├───arm
│ │ │ ├───gcc_ride7
│ │ │ ├───iar
│ │ │ └───TrueSTUDIO
│ │ └───Documentation
│ └───STM32F10x_StdPeriph_Driver
│ ├───inc
│ └───src
├───Project
│ ├───STM32F10x_StdPeriph_Examples
│ │ ├───ADC
│ │ │ ├───3ADCs_DMA
│ │ │ ├───ADC1_DMA
│ │ │ ├───AnalogWatchdog
│ │ │ ├───ExtLinesTrigger
│ │ │ ├───RegSimul_DualMode
│ │ │ └───TIMTrigger_AutoInjection
│ │ ├───BKP
│ │ │ ├───Backup_Data
│ │ │ └───Tamper
│ │ ├───CAN
│ │ │ ├───DualCAN
│ │ │ ├───LoopBack
│ │ │ └───Networking
│ │ ├───CEC
│ │ │ └───DataExchangeInterrupt
│ │ ├───CortexM3
│ │ │ ├───BitBand
│ │ │ ├───Mode_Privilege
│ │ │ └───MPU
│ │ │ └───Linker
│ │ │ ├───RIDE
│ │ │ └───TrueSTUDIO
│ │ ├───CRC
│ │ │ └───CRC_Calculation
│ │ ├───DAC
│ │ │ ├───DualModeDMA_SineWave
│ │ │ ├───OneChannelDMA_Escalator
│ │ │ ├───OneChannel_NoiseWave
│ │ │ └───TwoChannels_TriangleWave
│ │ ├───DMA
│ │ │ ├───ADC_TIM1
│ │ │ ├───FLASH_RAM
│ │ │ ├───FSMC
│ │ │ ├───I2C_RAM
│ │ │ └───SPI_RAM
│ │ ├───EXTI
│ │ │ └───EXTI_Config
│ │ ├───FLASH
│ │ │ ├───Dual_Boot
│ │ │ │ ├───EWARM
│ │ │ │ ├───HiTOP
│ │ │ │ │ ├───STM3210X-XL_BANK1
│ │ │ │ │ │ ├───Objects
│ │ │ │ │ │ └───Settings
│ │ │ │ │ └───STM3210X-XL_BANK2
│ │ │ │ │ ├───Objects
│ │ │ │ │ └───Settings
│ │ │ │ ├───MDK-ARM
│ │ │ │ └───TrueSTUDIO
│ │ │ │ ├───.metadata
│ │ │ │ │ └───Link
│ │ │ │ ├───STM32F10X_XL_BANK1
│ │ │ │ │ └───.settings
│ │ │ │ └───STM32F10X_XL_BANK2
│ │ │ │ └───.settings
│ │ │ ├───Program
│ │ │ └───Write_Protection
│ │ ├───FSMC
│ │ │ ├───NAND
│ │ │ ├───NOR
│ │ │ ├───NOR_CodeExecute
│ │ │ │ └───binary
│ │ │ ├───OneNAND
│ │ │ ├───SRAM
│ │ │ └───SRAM_DataMemory
│ │ │ ├───EWARM
│ │ │ ├───HiTOP
│ │ │ ├───MDK-ARM
│ │ │ ├───RIDE
│ │ │ └───TrueSTUDIO
│ │ ├───GPIO
│ │ │ ├───IOToggle
│ │ │ └───JTAG_Remap
│ │ ├───I2C
│ │ │ ├───EEPROM
│ │ │ ├───I2C_TSENSOR
│ │ │ └───IOExpander
│ │ ├───I2S
│ │ │ ├───Interrupt
│ │ │ └───SPI_I2S_Switch
│ │ ├───IWDG
│ │ │ └───IWDG_Reset
│ │ ├───Lib_DEBUG
│ │ │ └───RunTime_Check
│ │ ├───NVIC
│ │ │ ├───DMA_WFIMode
│ │ │ ├───IRQ_Mask
│ │ │ ├───IRQ_Priority
│ │ │ └───VectorTable_Relocation
│ │ │ └───linker
│ │ │ ├───EWARM
│ │ │ ├───HiTOP
│ │ │ │ ├───STM32100B-EVAL
│ │ │ │ ├───STM32100E-EVAL
│ │ │ │ ├───STM3210B-EVAL
│ │ │ │ ├───STM3210C-EVAL
│ │ │ │ ├───STM3210E-EVAL
│ │ │ │ └───STM3210X-XL
│ │ │ ├───RIDE
│ │ │ └───TrueSTUDIO
│ │ ├───PWR
│ │ │ ├───PVD
│ │ │ ├───STANDBY
│ │ │ └───STOP
│ │ ├───RCC
│ │ │ └───RCC_ClockConfig
│ │ ├───RTC
│ │ │ ├───Calendar
│ │ │ └───LSI_Calib
│ │ ├───SDIO
│ │ │ └───uSDCard
│ │ ├───SPI
│ │ │ ├───CRC
│ │ │ ├───DMA
│ │ │ ├───FullDuplex_SoftNSS
│ │ │ ├───Simplex_Interrupt
│ │ │ └───SPI_FLASH
│ │ ├───SysTick
│ │ │ └───TimeBase
│ │ ├───TIM
│ │ │ ├───6Steps
│ │ │ ├───7PWM_Output
│ │ │ ├───Cascade_Synchro
│ │ │ ├───ComplementarySignals
│ │ │ ├───DMA
│ │ │ ├───DMABurst
│ │ │ ├───ExtTrigger_Synchro
│ │ │ ├───InputCapture
│ │ │ ├───OCActive
│ │ │ ├───OCInactive
│ │ │ ├───OCToggle
│ │ │ ├───OnePulse
│ │ │ ├───Parallel_Synchro
│ │ │ ├───PWM_Input
│ │ │ ├───PWM_Output
│ │ │ ├───TIM10_PWMOutput
│ │ │ ├───TIM15_ComplementarySignals
│ │ │ ├───TIM1_Synchro
│ │ │ ├───TIM9_OCToggle
│ │ │ └───TimeBase
│ │ ├───USART
│ │ │ ├───DMA_Interrupt
│ │ │ ├───DMA_Polling
│ │ │ ├───HalfDuplex
│ │ │ ├───HyperTerminal_HwFlowControl
│ │ │ ├───HyperTerminal_Interrupt
│ │ │ ├───Interrupt
│ │ │ ├───IrDA
│ │ │ │ ├───Receive
│ │ │ │ └───Transmit
│ │ │ ├───MultiProcessor
│ │ │ ├───Polling
│ │ │ ├───Printf
│ │ │ ├───Smartcard
│ │ │ └───Synchronous
│ │ └───WWDG
│ │ └───WWDG_Reset
│ └───STM32F10x_StdPeriph_Template
│ ├───EWARM
│ ├───HiTOP
│ │ ├───STM32100B-EVAL
│ │ │ ├───Objects
│ │ │ └───Settings
│ │ ├───STM32100E-EVAL
│ │ │ ├───Objects
│ │ │ └───Settings
│ │ ├───STM3210B-EVAL
│ │ │ ├───Objects
│ │ │ └───Settings
│ │ ├───STM3210C-EVAL
│ │ │ ├───Objects
│ │ │ └───Settings
│ │ ├───STM3210E-EVAL
│ │ │ ├───Objects
│ │ │ └───Settings
│ │ └───STM3210E-EVAL_XL
│ │ ├───Objects
│ │ └───Settings
│ ├───MDK-ARM
│ ├───RIDE
│ └───TrueSTUDIO
│ ├───.metadata
│ │ └───Link
│ ├───STM32100B-EVAL
│ │ └───.settings
│ ├───STM32100E-EVAL
│ │ └───.settings
│ ├───STM3210B-EVAL
│ │ └───.settings
│ ├───STM3210C-EVAL
│ │ └───.settings
│ ├───STM3210E-EVAL
│ │ └───.settings
│ └───STM3210E-EVAL_XL
│ └───.settings
├───Utilities
│ └───STM32_EVAL
│ ├───Common
│ ├───STM32100B_EVAL
│ ├───STM32100E_EVAL
│ ├───STM3210B_EVAL
│ ├───STM3210C_EVAL
│ ├───STM3210E_EVAL
│ └───STM32L152_EVAL
└───_htmresc
这是一份非常标准的 STM32F10x 标准外设库 V3.5.0 的目录结构。这是 ST 官方早期最经典的固件库版本,也是很多初学者和老工程师的“启蒙老师”。
这份目录结构的设计非常严谨,遵循了 ARM 的 CMSIS 标准和软件工程的高内聚低耦合原则。
以下我为你详细解析这些目录的含义,以及它们英文命名背后的逻辑(为什么这么取)。
1. 核心库目录 (Libraries)
这是整个固件库的“心脏”,包含了驱动芯片所需的所有底层代码。
-
CMSIS(Cortex Microcontroller Software Interface Standard)- 解析:这是 ARM 公司制定的标准,目的是为了让软件能在不同厂商(如 ST、NXP)的 Cortex-M 内核芯片上通用。
CM3:代表 Cortex-M3,这是 STM32F10x 系列使用的内核架构。CoreSupport:- 含义:内核支持文件。
- 内容:包含
core_cm3.c/h,这是 ARM 官方提供的,定义了内核寄存器(如 NVIC、SysTick)的访问接口。
DeviceSupport->ST->STM32F10x:- 含义:设备支持文件。
- 内容:这里存放的是 ST 针对具体型号(STM32F10x)的定义。最重要的是
startup文件夹。 startup:启动文件。里面是汇编代码(.s),按编译器分类(arm代表 Keil MDK,iar代表 IAR EWARM,gcc代表开源编译器)。它的作用是上电后的第一步:初始化堆栈、复制中断向量表,然后跳转到main函数。
-
STM32F10x_StdPeriph_Driver(Standard Peripheral Driver)- 解析:这是 ST 编写的标准外设驱动库。
- 命名逻辑:
- StdPeriph:Standard Peripheral 的缩写,意为“标准外设”。
- Driver:驱动程序。
inc(Include):- 含义:头文件目录。
- 内容:存放
.h文件(如stm32f10x_gpio.h)。这些文件定义了外设的寄存器结构体、函数声明和宏定义。
src(Source):- 含义:源文件目录。
- 内容:存放
.c文件(如stm32f10x_gpio.c)。这是外设功能的具体代码实现。
2. 工程与示例目录 (Project)
这个目录是“教科书”,教你如何写代码。
-
STM32F10x_StdPeriph_Examples- 含义:标准外设库的示例代码集合。
- 结构:里面按外设功能分类(如
GPIO,USART,TIM等)。 - 作用:如果你想用串口,就进
USART文件夹找例子。这是学习库函数用法最直接的地方。
-
STM32F10x_StdPeriph_Template- 含义:工程模板。
- 作用:这是一个已经配置好的空工程框架。当你需要开发新项目时,直接复制这个文件夹,就不用自己去手动添加成百上千个库文件了,省时省力。
3. 工具与评估板目录 (Utilities)
STM32_EVAL- 含义:ST 官方评估板(Evaluation Board)的专用驱动。
- 内容:包含针对特定开发板(如
STM3210E_EVAL)上外设的驱动,比如板载的 LCD 屏幕、SD 卡插槽、按键和 LED 的驱动代码。 - 注意:如果你用的是自己画的板子,这个目录通常用不上。
4. 命名逻辑总结表
为了让你更清楚为什么这么命名,我整理了以下表格:
| 英文缩写/单词 | 全称 | 中文含义 | 命名原因/逻辑 |
|---|---|---|---|
| CMSIS | Cortex Microcontroller Software Interface Standard | 微控制器软件接口标准 | ARM 制定的行业标准,确保代码在不同 Cortex 芯片间可移植。 |
| CoreSupport | Core Support | 内核支持 | 存放支持 Cortex-M3 内核核心功能的文件(如中断控制器)。 |
| DeviceSupport | Device Support | 设备支持 | 存放具体芯片型号(STM32F10x)特有的文件(如启动文件、寄存器映射)。 |
| StdPeriph | Standard Peripheral | 标准外设 | 对应“寄存器开发”,这是官方封装好的标准库函数。 |
| inc | Include | 包含文件 | C 语言工程惯例,存放 .h 头文件,用于被代码 #include。 |
| src | Source | 源代码 | C 语言工程惯例,存放 .c 源文件,包含具体的函数实现。 |
| startup | Startup Code | 启动代码 | 汇编语言惯例,存放系统上电复位后最先执行的代码。 |
| EVAL | Evaluation | 评估/评测 | 电子行业惯例,指官方推出的用于测试芯片性能的“评估板”。 |
| Template | Template | 模板 | 软件工程惯例,指预先搭好的框架,用于快速开始新项目。 |
💡 给你的建议
在实际开发中,你通常的操作流程是:
- 复制
Project\STM32F10x_StdPeriph_Template文件夹作为你新工程的根目录。 - 参考
Project\STM32F10x_StdPeriph_Examples里的代码,把你需要的外设功能(如 GPIO 点亮 LED)复制到你的main.c中。 - 编译时,编译器会去
Libraries目录里寻找底层实现。
理解了这个结构,你就理解了 STM32 开发的基本骨架。
浙公网安备 33010602011771号