CMSIS 标准中最主要的为 CMSIS 核心层,它包括了:
内核函数层:其中包含用于访问内核寄存器的名称、地址定义;
设备外设访问层:提供了片上的核外外设的地址和中断定义。
库目录,文件简介
在STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 文件中:
Libraries:文件夹下是驱动库的源代码及启动文件。
Project :文件夹下是用驱动库写的例子和工程模板。
Utilities:包含了基于 ST 官方实验板的例程,以及第三方软件库,如 emwin 图形软件
库、fatfs 文件系统。
MCD-ST Liberty…:库文件的 License 说明。
Release_Note.html::库的版本更新说明。
stm32f4xx_dsp_stdperiph…: 库帮助文档,这是一个已经编译好的 HTML 文件,主要
讲述如何使用驱动库来编写自己的应用程序。
在使用库开发时,我们需要把 libraries 目录下的库函数文件添加到工程中,并查阅库
帮助文档来了解 ST 提供的库函数,这个文档说明了每一个库函数的使用方法。
进入Libraries 文件夹:
关于内核与外设的库文件分别存放在 CMSIS 和STM32F4xx_StdPeriph_Driver 文件夹中
CMSIS 文件夹:
其中 Device 与 Include 中的文件是我们使用得最多的。
Include:
在 Include 文件夹中包含了 的是位于 CMSIS 标准的核内设备函数层的 Cortex-M 核通用
的头文件,它们的作用是为那些采用 Cortex-M 核设计 SOC 的芯片商设计的芯片外设提供
一个进入内核的接口,定义了一些内核相关的寄存器(类似我们前面写的 stm32f4xx.h 文件,
但定义的是内核部分的寄存器)。
我们写 STM32F4 的工程,必须用到其中的四个文件:core_cm4.h、core_cmFunc.h、
corecmInstr.h、core_cmSimd.h
Device 文件夹:
在 Device 文件夹下的是具体芯片直接相关的文件,包含启动文件、芯片外设寄存器定
义、系统时钟初始化功能的一些文件。
system_stm32f4xx.c
这个文件包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数,例如
我们前两章提到供启动文件调用的“SystemInit”函数,用于上电后初始化时钟,该函数的
定义就存储在 system_stm32f4xx.c 文件。STM32F429 系列的芯片,调用库的这个
SystemInit 函数后,系统时钟被初始化为 180MHz,如有需要可以修改这个文件的内容,设
置成自己所需的时钟频率。
启动文件
在这个目录下,还有很多文件夹,如“ARM”、“gcc_ride7”、“iar”等,这些文件在这个目录下,还有很多文件夹,如“ARM”、“gcc_ride7”、“iar”等,这些文件
夹下包含了对应编译平台的汇编启动文件,在实际使用时要根据编译平台来选择。我们使
用的 MDK 启动文件在“ARM”文件夹中。其中的“strartup_stm32f429_439xx.s”即为
STM32F429 芯片的启动文件。
stm32f4xx.h
stm32f4xx.h 这个文件非常重要,是一个 STM32 芯片底层相关的文件。它是我们前两
章自己定义的“stm32f4xx.h”文件的完整版,包含了 STM32 中所有的外设寄存器地址和结
构体类型定义,在使用到 STM32 标准库的地方都要包含这个头文件。
STM32F10x_StdPeriph_Driver 文件夹:
STM32F4xx_StdPeriph_Driver 文件夹下有 inc(include 的缩写)跟 src(source 的简写)
这两个文件夹,这里的文件属于 CMSIS 之外的的、芯片片上外设部分。
src 里面是每个设备外设的驱动源程序,inc 则是相对应的外设头文件。src 及 inc 文件夹是 ST 标准库的主要内容。
在 src 和 inc 文件夹里的就是 ST 公司针对每个 STM32 外设而编写的库函数文件,每个
外设对应一个 .c 和 .h 后缀的文件。
misc.c 文件,这个文件提供了外设对内核中的
NVIC(中断向量控制器)的访问函数,在配置中断时,我们必须把这个文件添加到工程中。
stm32f4xx_it.c、 stm32f4xx_conf.h 文件:
在这个文件目录下,存放了官方的一个库工程模板,我们在用库建立一个完整的工程
时,还需要添加这个目录下的 stm32f4xx_it.c、stm32f4xx_it.h、stm32f4xx_conf.h 这三个文
件。
stm32f4xx_it.c:这个文件是专门用来编写中断服务函数的。
stm32f4xx_conf.h:这个文件被包含进 stm32f4xx.h 文件。
stm32f4xx_conf.h 这个文件还可配置是否使用“断言”编译选项。
库各文件间关系:
在实际的使用库开发工程的过程中,我们把位于 CMSIS 层的文件包含进工程,除了特殊系统时钟需要修改 system_stm32f4xx.c,其它文件丝毫不用修改。
帮助文档
《STM32F4xx 参考手册》:这个文件全方位介绍了 STM32 芯片的各种片上外设,它把 STM32 的时钟、存储器架构、及各种外设、寄存器都描述得清清楚楚。当我们对 STM32 的外设感到困惑时,可查阅这个文档。
《STM32F4xx 规格书》:本文档相当于 STM32 的 datasheet,包含了 STM32 芯片所有的引脚功能说明及存储器架构、芯片外设架构说明。后面我们使用 STM32 其它外设时,常常需要查找这个手册,了解外设对应到 STM32 的哪个 GPIO 引脚。
《Cortex™-M4 内核参考手册》:主要讲解 STM32 内核寄存器相关的说明,例如系统定时器、中断等寄存器。这部分的内容是《STM32F4xx 参考手册》没涉及到的内核部分的补充。相对来说,本文档虽然介绍了内核寄存器,但不如以下两个文档详细,要了解内核时,可作为以下两个手册的配合资料使用。
《Cortex-M3 权威指南》、《cortex_m4_Technical Reference Manual》:这两个手册是由 ARM 公司提供的,它详细讲解了 Cortex 内核的架构和特性,要深入
了解 Cortex-M 内核,这是首选,经典中的经典,其中 Cortex-M3 版本有中文版,方便学习。因为 Cortex-M4 内核与 Cortex-M3 内核大部分相同,可用它来学习,而Cortex-M4 新增的特性,则必须参考《cortex_m4_Technical Reference Manual》文档了,目前只有英文版。
《stm32f4xx_dsp_stdperiph_lib_um.chm》:这个就是本章提到的库的帮助文档,在使用库函数时,我们最好通过查阅此文件来了解标准库提供了哪些外设、函数原型或库函数的调用的方法。也可以直接阅读源码里面的函数的函数说明。
CMSIS 标准中最主要的为 CMSIS 核心层,它包括了:
内核函数层:其中包含用于访问内核寄存器的名称、地址定义;
设备外设访问层:提供了片上的核外外设的地址和中断定义。
库目录,文件简介
在STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 文件中:
Libraries:文件夹下是驱动库的源代码及启动文件。
Project :文件夹下是用驱动库写的例子和工程模板。
Utilities:包含了基于 ST 官方实验板的例程,以及第三方软件库,如 emwin 图形软件
库、fatfs 文件系统。
MCD-ST Liberty…:库文件的 License 说明。
Release_Note.html::库的版本更新说明。
stm32f4xx_dsp_stdperiph…: 库帮助文档,这是一个已经编译好的 HTML 文件,主要
讲述如何使用驱动库来编写自己的应用程序。
在使用库开发时,我们需要把 libraries 目录下的库函数文件添加到工程中,并查阅库
帮助文档来了解 ST 提供的库函数,这个文档说明了每一个库函数的使用方法。
进入Libraries 文件夹:
关于内核与外设的库文件分别存放在 CMSIS 和STM32F4xx_StdPeriph_Driver 文件夹中
CMSIS 文件夹:
其中 Device 与 Include 中的文件是我们使用得最多的。
Include:
在 Include 文件夹中包含了 的是位于 CMSIS 标准的核内设备函数层的 Cortex-M 核通用
的头文件,它们的作用是为那些采用 Cortex-M 核设计 SOC 的芯片商设计的芯片外设提供
一个进入内核的接口,定义了一些内核相关的寄存器(类似我们前面写的 stm32f4xx.h 文件,
但定义的是内核部分的寄存器)。
我们写 STM32F4 的工程,必须用到其中的四个文件:core_cm4.h、core_cmFunc.h、
corecmInstr.h、core_cmSimd.h
Device 文件夹:
在 Device 文件夹下的是具体芯片直接相关的文件,包含启动文件、芯片外设寄存器定
义、系统时钟初始化功能的一些文件。
system_stm32f4xx.c
这个文件包含了 STM32 芯片上电后初始化系统时钟、扩展外部存储器用的函数,例如
我们前两章提到供启动文件调用的“SystemInit”函数,用于上电后初始化时钟,该函数的
定义就存储在 system_stm32f4xx.c 文件。STM32F429 系列的芯片,调用库的这个
SystemInit 函数后,系统时钟被初始化为 180MHz,如有需要可以修改这个文件的内容,设
置成自己所需的时钟频率。
启动文件
在这个目录下,还有很多文件夹,如“ARM”、“gcc_ride7”、“iar”等,这些文件在这个目录下,还有很多文件夹,如“ARM”、“gcc_ride7”、“iar”等,这些文件
夹下包含了对应编译平台的汇编启动文件,在实际使用时要根据编译平台来选择。我们使
用的 MDK 启动文件在“ARM”文件夹中。其中的“strartup_stm32f429_439xx.s”即为
STM32F429 芯片的启动文件。
stm32f4xx.h
stm32f4xx.h 这个文件非常重要,是一个 STM32 芯片底层相关的文件。它是我们前两
章自己定义的“stm32f4xx.h”文件的完整版,包含了 STM32 中所有的外设寄存器地址和结
构体类型定义,在使用到 STM32 标准库的地方都要包含这个头文件。
STM32F10x_StdPeriph_Driver 文件夹:
STM32F4xx_StdPeriph_Driver 文件夹下有 inc(include 的缩写)跟 src(source 的简写)
这两个文件夹,这里的文件属于 CMSIS 之外的的、芯片片上外设部分。
src 里面是每个设备外设的驱动源程序,inc 则是相对应的外设头文件。src 及 inc 文件夹是 ST 标准库的主要内容。
在 src 和 inc 文件夹里的就是 ST 公司针对每个 STM32 外设而编写的库函数文件,每个
外设对应一个 .c 和 .h 后缀的文件。
misc.c 文件,这个文件提供了外设对内核中的
NVIC(中断向量控制器)的访问函数,在配置中断时,我们必须把这个文件添加到工程中。
stm32f4xx_it.c、 stm32f4xx_conf.h 文件:
在这个文件目录下,存放了官方的一个库工程模板,我们在用库建立一个完整的工程
时,还需要添加这个目录下的 stm32f4xx_it.c、stm32f4xx_it.h、stm32f4xx_conf.h 这三个文
件。
stm32f4xx_it.c:这个文件是专门用来编写中断服务函数的。
stm32f4xx_conf.h:这个文件被包含进 stm32f4xx.h 文件。
stm32f4xx_conf.h 这个文件还可配置是否使用“断言”编译选项。
库各文件间关系:
在实际的使用库开发工程的过程中,我们把位于 CMSIS 层的文件包含进工程,除了特殊系统时钟需要修改 system_stm32f4xx.c,其它文件丝毫不用修改。
帮助文档
《STM32F4xx 参考手册》:这个文件全方位介绍了 STM32 芯片的各种片上外设,它把 STM32 的时钟、存储器架构、及各种外设、寄存器都描述得清清楚楚。当我们对 STM32 的外设感到困惑时,可查阅这个文档。
《STM32F4xx 规格书》:本文档相当于 STM32 的 datasheet,包含了 STM32 芯片所有的引脚功能说明及存储器架构、芯片外设架构说明。后面我们使用 STM32 其它外设时,常常需要查找这个手册,了解外设对应到 STM32 的哪个 GPIO 引脚。
《Cortex™-M4 内核参考手册》:主要讲解 STM32 内核寄存器相关的说明,例如系统定时器、中断等寄存器。这部分的内容是《STM32F4xx 参考手册》没涉及到的内核部分的补充。相对来说,本文档虽然介绍了内核寄存器,但不如以下两个文档详细,要了解内核时,可作为以下两个手册的配合资料使用。
《Cortex-M3 权威指南》、《cortex_m4_Technical Reference Manual》:这两个手册是由 ARM 公司提供的,它详细讲解了 Cortex 内核的架构和特性,要深入
了解 Cortex-M 内核,这是首选,经典中的经典,其中 Cortex-M3 版本有中文版,方便学习。因为 Cortex-M4 内核与 Cortex-M3 内核大部分相同,可用它来学习,而Cortex-M4 新增的特性,则必须参考《cortex_m4_Technical Reference Manual》文档了,目前只有英文版。
《stm32f4xx_dsp_stdperiph_lib_um.chm》:这个就是本章提到的库的帮助文档,在使用库函数时,我们最好通过查阅此文件来了解标准库提供了哪些外设、函数原型或库函数的调用的方法。也可以直接阅读源码里面的函数的函数说明。
举报