STM32标准库
5.1 STM32固件库文件分析
1、 汇编编写的启动文件
startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、对用C库函数_main最终去到C的世界
2、时钟配置文件
system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M
3、外设相关的
stm32f10x.h:实现了内核之外的外设的寄存器映射
xxx:GPIO、USRAT、I2C、SPI、ESMC
stm32f10x_xx.c:外设的驱动函数库文件
stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明
4、内核相关的
CMSIS-Cortex 微控制器软件接口标准
core_cm3.h 实现内核里面外设的寄存器映射
core_cm.c
NVIC(嵌套向量中断控制器)、SysTick(系统滴答计时器)
misc.h
misc.c
5、头文件的配置文件
stm32f10x_conf.h:头文件的头文件(把所以的头文件都包含在里面),包含:
stm32f10x_usart.h
stm32f10x_gpio.h
stm32f10x_i2c.h
stm32f10x_spi.h
等等
6、专门存放中断服务函数的C文件
stm32f10x_it.c
stm32f10x_it.h
中断服务函数可以随意放在其他的地方,并不是一定要放在stm32f10x_it.c
#include<stm32f10x.h>//相对于51单片机的 #include "reg51.h"
int main(void)
{
//此时的系统时钟已经被配置成72M
}
5.2 CMSIS标准和库层次的关系
因为基于 Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex 微控制器软件 的兼容性问题, ARM 与芯片厂商建立了 CMSIS 标准(CortexMicroController Software Interface Standard)。
所谓 CMSIS 标准,实际是新建了一个软件抽象层。
5.2.1 库目录、文件简介
STM32 标准库可以从官网获得
Libraries: 文件夹下是驱动库的源代码及启动文件,这个非常重要,我们要使用的固件库就在这个文件夹里面。
Project : 文件夹下是用驱动库写的例子和工程模板,其中那些为每个外设写好的例程对我们非常有用,我们在学习的时候就可以参考这里面的例程,非常全面,简直就是穷尽了外设的所有功能。
Utilities:包含了基于 ST 官方实验板的例程,不需要用到,略过即可。
stm32f10x_stdperiph_lib_um.chm: 库帮助文档,这个很有用,不喜欢直接看源码的可
以在合理查询每个外设的函数说明,非常详细。
5.2.2 CMSIS文件夹
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\文件夹展开内容
5.2.3 STM32F10x_StdPeriph_Driver 文件夹
文件目录: Libraries\STM32F10x_StdPeriph_Driver
进入 libraries 目录下的 STM32F10x_StdPeriph_Driver 文件夹
STM32F10x_StdPeriph_Driver 文件夹下有 inc(include 的缩写)跟 src(source 的简写)这两个文件夹,这里的文件属于 CMSIS 之外的的、芯片片上外设部分。 src 里面是每个设备外设的驱动源程序, inc 则是相对应的外设头文件。
5.2.4 stm32f10x_it.c、 stm32f10x_conf.h 和 system_stm32f10x.c 文件
文件目录: STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template在这个文件目录下, 存放了官方的一个库工程模板,我们在用库建立一个完整的工程时 , 还 需 要 添 加 这 个 目 录 下 的 stm32f10x_it.c 、 stm32f10x_it.h 、 stm32f10x_conf.h 和
system_stm32f10x.c 这四个文件。
1、stm32f10x_it.c:这个文件是专门用来编写中断服务函数的
2、system_stm32f10x.c:这个文件包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数
3、stm32f10x_conf.h: 这个文件被包含进 stm32f10x.h 文件。