STM32库
什么是STM32库
STM32 库是由 ST公司针对 STM32 提供的 函数接口,即 API ( Application Program Interface ) ,开发者可调用这些函数接口来配置 STM32 的寄存器,使开发人员得以 脱离最底层的寄存器操作,有开发快速,易 于阅读,维护成本低等优点。
==库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器
直接相关的配置,向上为用户提供配置寄存器的接口==
库目录,文件简介
Libraries 文件夹下是驱动库的源代码及启动文件。
Project 文件夹下是用驱动库写的例子跟一个工程模板。
- core_cm3.c 文件
在CoreSupport 中的是位于 CMSIS 标准的 核内设备函数层 的 M3 核通用
的源文件
cor e_cm3.c
和头文件
core_cm3.h ,它们的作用是为那些采用 Cortex-M3 核设计 SOC 的芯片商设计的芯片外设提供一个进入 M3 内核的接 口。这两个文件在其它公司的 M3 系列芯片也是相同的。
core_cm3.c
文件还有一些与编译器相关条件编译语句,用于屏蔽不同编
译器的差异
system_stm32f10x.c
在DeviceSupport文件夹下的是==启动文件、 外设寄存器定义 & 中断向量 定义层==的一些文件,这是由 ST公司提供的。
system_stm32f10x.c遵守CMSIS标准。该文件的功能是==设置系统时钟和总线时钟==。
还要通过 M3 核的核内寄存器来对时钟进行倍频,分频stm32f10x.h
Libraries \ CMSIS \ Core \ CM3 \ startup \ arm
文件夹下是由汇编编写的系统启动文件,不同的文件对应不同的芯片型号,在使用时要注意
文件名的英文缩写的意义如下:
cl:互联型产品,stm32f105/107 系列
vl:超值型产品,stm32f100 系列
xl:超高密度(容量)产品,stm32f101/103 系列
ld:低密度产品,FLASH 小于 64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH 大于 128
启动文件是任何处理器在上点复位之后最先运行的一段汇编程序。在我们 编写的 c 语言代码运行之前,需要由汇编为 c 语言的运行建立一个合适的环
境,接下来才能运行我们的程序。
启动文件的作用是:
- 初始化堆栈指针 SP;
- 初始化程序计数器指针 PC;
- 设置堆、栈的大小;
- 设置异常向量表的入口地址;
- 配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没 有外部 SRAM);
- 设置 C库的分支入口__main(最终用来调用 main 函数);
- 在 3.5 版的启动文件还调用了在
system_stm32f10x.c
文件中的
SystemIn i () 函数配置系统时钟,在旧版本的工程中要用户进入 main 函数自己调用SystemIni () 函数。
- STM32F10x_StdPeriph_Driver
Libraries \ STM32F10x_StdPeriph_Driver 文件夹下有
inc (include 的
缩写)跟
src (source 的简写)这两个文件夹,这都属于 CMSIS 的 设备外设函
数 部分。 src 里面是每个设备外设的驱动程序,这些外设是芯片制造商在 Cortex-M3 核外加进去的.
特别的misc.c 文件,这个文件提供了外设 对内核中的 NVIC(中断向量控制器)的访问函数,在配置中断时,我们必须把这 个文件添加到工程中。
- stm32f10x_it.c、stm32f10x_conf.h
在库目录的 \Project\STM32F10x_StdPeriph_Template 目录下,存放了官方的一个库工程模板,我们在用库建立一个完整的工程时,还需要添加这个目录下的stm32f10x_it.c 、 stm32f10x_it.h、stm32f10x_conf.h 这三
个文件。
stm32f10x_it.c,是专门用来编写==中断服务函数==的,在我们修改前,这个文件已经定义了一些系统异常的接口,其它普通中断服务函数由我们自己添加。库各文件间的关系

STM32结构及库层次关系
CMSIS标准

内核函数层: 包含用于访问内核寄存器的名称、地址定义,主要有ARM公司(生产内核)提供;
设备外设访问层: 提供片上的核外外设的地址和中断定义,由芯片生产商提供。