一、CMSIS
构建于MCU和用户层之间,屏蔽了硬件差异
1、内核函数层:包含访问内核寄存器的名称、地址定义,主要由ARM公司提供。 2、设备外设访问层:提供了片上的核外外设的地址和中断定义,主要有芯片生产商提供。
二、库目录及文件
1、Libraries:文件夹下是驱动库的源代码及启动文件,这个非常重要,我们要使用的固件库就在这个文件夹里面。
2、Project :文件夹下是用驱动库写的例子和工程模板,其中那些为每个外设写好的例程对我们非常有用,我们在学习的时候就可以参考这里面的例程,非常全面,简直就是穷尽了外设的所有功能。
3、Utilities:包含了基于 ST 官方实验板的例程,不需要用到,略过即可。
4、stm32f10x_stdperiph_lib_um.chm: 库帮助文档,ST 公司已经为你写好了每个外设的驱动了。
1、Libiaries
a、CMSIS文件夹
内核相关文件
core_cm3.c:实现了操作内核外设寄存器的函数,较少使用。 core_cm3.h:实现内核和寄存器的映射,针对内核的外设。其中包含了“stdint.h”头文件,提供类型定义,屏蔽了不同芯片平台int大小的差异。
stdint.h
/* exact-width signed integer types */
typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed __int64 int64_t;
/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
启动文件
位于startup/arm文件夹内,目前使用startup_stm32f10x_hd.s作为启动文件,其中hd: high-density 大容量, FLASH 容量在 256-512K 之间。
STM32F10X.H
片上外设对存储器的映射,非常重要,与内核中core_cm3.h对应。
SYSTEM_STM32F10X.C
实现STM32的时钟配置,操作RCC外设。
系统在上电之后,首选会执行由汇编编写的启动文件,启动文件中的复位函数中调用的 SystemInit 函数就在这个文件里面定义。调用完之后,系统的时钟就被初始化成 72M。如果后面我们需要重新配置系统时钟,我们就可以参考这个函数重写。为了维持库的完整性,我们不会直接在这个文件里面修改时钟配置函数。
b、STM32F10x_StdPeriph_Driver 文件夹
包含inc(include 的缩写,外设头文件)跟 src(source 的简写,包含外设驱动源程序)文件夹,为CMSIS之外的、芯片上外设部分。即为ST公司为每个外设编写的库函数。 misxc.c文件,提供了外设对内核中的NVIC的访问函数。
2、Project
官方的库工程模板
stm32f10x_it.h
stm32f10x_it.c
内核相关文件。 这个文件是专门用来编写中断服务函数的,在我们修改前,这个文件已经定义了一些系统异常(特殊中断)的接口,其它普通中断服务函数由我们自己添加。
stm32f10x_conf.h
这个文件被包含进 stm32f10x.h 文件。
system_stm32f10x.c
这个文件包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数。