一. CMSIS标准:所谓的CMSIS标准,就是创建了一个软件抽象层,如下图所示
CMSIS标准中最主要的是CMSIS核心层,主要包括:
- 内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由 ARM 公司提供
- 设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供
二.库目录、文件简介:
打开工程文件夹,我们会发现有许多英文命名的文件夹,接下来介绍一下各个文件夹里放的都是啥。
-
system_stm32f4xx.c文件 :包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数 STM32F407 系列的芯片,调用库的这个 SystemInit 函数后,系统时钟被 初始化 168MHz。
-
启动文件startup_stm32F407xx.s: 包含了对应编译平台的汇编启动文件,在实际使用时要根据编译平台来选择。
-
stm32F407xx.h 文件 : 包含了 STM32 中所有的外设寄存器地址和结构体类型定义。
-
src文件夹:包括 stm32f4xx_hal_XXXXXX.c文件。
-
inc 文件夹:包括 stm32f4xx_hal_XXXXXX.h文件。
-
stm32f4xx_it.c :编写中断服务函数的.c文件,在该 文件中已经定义了一些系统异常 ( 特殊中断 ) 的接口,而其它普通中断服务函数由我们自己添加。
-
stm32f4xx_hal_conf.h 文件: 此文件根据芯片型号增减 ST 库的 外设文件 , 另外也可以进行时钟源配置。
三.各个库文件之间的关系:
在实际的使用库开发工程的过程中,我们把位于 CMSIS 层的文件包含进工程,除了特殊系统时钟需要修改 system_stm32f4xx.c ,其它文件丝毫不用修改,也 不建议修改 。对于位于用户层的几个文件,就是我们在使用库的时候,针对不同的应用对库文件进行增删。