STM32F10x标准外设库目录结构以及作用

STM32F10x标准外设库(Standard Peripheral Library,简称SPL)是STMicroelectronics为STM32F10x系列微控制器提供的一套固件库,用于简化外设配置和操作。以下是其目录结构及作用详解:

下载STM32F10x标准外设库
https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html


stm32f103c8t6标准外设库最新版为:
STM32F10x_StdPeriph_Lib_V3.6.0.zip,解压后目录结构如下

一、目录结构

STM32F10x_StdPeriph_Lib_VX.X.X/
├── Libraries/
│   ├── CMSIS/                  // Cortex微控制器软件接口标准
│   │   ├── CoreSupport/        // Cortex-M3核心支持文件
│   │   ├── DeviceSupport/      // STM32F10x设备支持文件
│   │   └── Startup/            // 启动文件(汇编)
│   ├── STM32F10x_StdPeriph_Driver/  // 标准外设驱动库
│   │   ├── inc/                // 外设驱动头文件
│   │   └── src/                // 外设驱动源文件
├── Project/
│   ├── STM32F10x_StdPeriph_Examples/  // 外设示例代码
│   ├── STM32F10x_StdPeriph_Template/  // 项目模板
│   └── STM32F10x_StdPeriph_Examples_ADC/  // 具体外设示例(如ADC)
├── Utilities/                  // 实用工具(如串口调试)
└── Release_Notes.html          // 版本更新说明

二、目录作用详解

1. Libraries/
Libraries 目录详解
Libraries/CMSIS/
├── CM3/
│   ├── CoreSupport/        // Cortex-M3 核心通用文件
│   │   ├── core_cm3.c      // Cortex-M3 内核寄存器操作函数
│   │   └── core_cm3.h      // Cortex-M3 内核寄存器定义(如 NVIC、SCB)
│   │
│   └── DeviceSupport/ST/STM32F10x/  // STM32F10x 芯片专用文件
│       ├── startup/        // 启动文件(不同 Flash 容量版本)
│       │   ├── startup_stm32f10x_ld.s   // 小容量(16~32KB)
│       │   ├── startup_stm32f10x_md.s   // 中容量(64~128KB,如 STM32F103C8T6)
│       │   ├── startup_stm32f10x_hd.s   // 大容量(256~512KB)
│       │   └── ...         
│       │
│       ├── system_stm32f10x.c    // 系统时钟初始化函数(SystemInit())
│       └── system_stm32f10x.h    // 系统时钟配置头文件
│
└── Documentation/         // CMSIS 规范文档(非必用)
  • CMSIS/

    • CoreSupport/:提供Cortex-M3核心的通用函数(如NVIC、SysTick配置)。

    • DeviceSupport/:包含STM32F10x系列设备的特定文件(如system_stm32f10x.c)。

    • Startup/:提供启动文件(如startup_stm32f10x_hd.s),定义中断向量表和初始化堆栈。

  • STM32F10x_StdPeriph_Driver/

    • inc/:外设驱动头文件(如stm32f10x_gpio.hstm32f10x_rcc.h)。

    • src/:外设驱动源文件(如stm32f10x_gpio.cstm32f10x_rcc.c),提供外设初始化、配置和操作函数。

2. Project/
Project/
├── Examples/            // 外设功能示例(可直接运行)
│   ├── ADC/             // ADC 采集示例
│   ├── GPIO/            // LED/按键控制示例
│   ├── TIM/             // 定时器中断/PWM 示例
│   └── ...              // 其他外设(CAN, DMA, RTC 等)
│
├── Templates/           // 空白工程模板
│   ├── MDK-ARM/         // Keil 工程模板
│   │   ├── startup/     // 启动文件(与芯片对应)
│   │   └── Template.uvprojx  // Keil 工程文件
│   │
│   ├── TrueSTUDIO/      // TrueSTUDIO 工程模板
│   └── main.c           // 主函数模板
│
└── ...                  // 其他支持文件
  • STM32F10x_StdPeriph_Examples/
    提供外设使用示例(如GPIO、USART、ADC等),帮助开发者快速上手。

  • STM32F10x_StdPeriph_Template/
    提供项目模板,包含基本的工程配置(如Keil、IAR项目文件)。

3. Utilities/
Utilities/
├── STM32_EVAL/          // 官方评估板驱动(如 STM3210B-EVAL)
│   ├── STM3210B-EVAL/   // 针对特定评估板的代码
│   │   ├── stm3210b_eval.c  // 板载外设初始化(LCD、按键、LED)
│   │   └── stm3210b_eval.h  // 板载外设接口定义
│   │
│   ├── STM3210E-EVAL/   // 其他评估板支持
│   └── ...              
│
└── ...                  // 其他工具(如串口调试助手)

包含实用工具(如串口调试库STM32_EVAL),用于开发板评估和调试。

4. Release_Notes.html

记录库的版本更新内容、修复的Bug及新增功能。


三、核心文件说明

1. 启动文件(Startup/
  • 作用:定义中断向量表、初始化堆栈指针、调用SystemInit()函数配置系统时钟。

  • 示例startup_stm32f10x_hd.s(大容量设备)。

2. 系统初始化文件(system_stm32f10x.c
  • 作用:配置系统时钟(如使用HSE、HSI或PLL),初始化Flash预取缓冲区。

  • 关键函数SystemInit()

3. 外设驱动文件
  • GPIOstm32f10x_gpio.c

    • 提供GPIO配置(输入/输出模式、速度、上拉/下拉)和读写操作。

  • RCCstm32f10x_rcc.c

    • 提供时钟配置(HSE/HSI/PLL)、外设时钟使能/禁用。

  • USARTstm32f10x_usart.c

    • 提供串口初始化、数据发送/接收、中断配置。

  • ADCstm32f10x_adc.c

    • 提供ADC初始化、通道配置、数据采集。


四、使用流程

  1. 创建工程

    • 复制Project/STM32F10x_StdPeriph_Template/中的模板文件。

    • 添加Libraries/中的必要文件(如启动文件、外设驱动)。

  2. 配置外设

    • 包含头文件(如#include "stm32f10x_gpio.h")。

    • 调用库函数初始化外设(如GPIO_Init())。

  3. 编译与调试

    • 使用Keil、IAR或GCC编译工程。

    • 通过Utilities/中的工具调试程序。


五、注意事项

  1. 库版本兼容性
    确保使用的库版本与目标芯片型号匹配(如STM32F103C8T6使用中等容量库)。

  2. HAL库替代
    STM32F10x标准外设库已逐步被HAL库取代,建议新项目优先使用HAL库。

  3. 代码优化
    标准外设库代码较为冗长,可根据需求裁剪或优化。


总结

STM32F10x标准外设库通过模块化的设计简化了外设操作,适合初学者和中小型项目。开发者应熟悉其目录结构和核心文件,结合示例代码快速上手。对于新项目,建议评估是否迁移至HAL库或LL库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值