
CMSIS标准及库层次关系) x4 a; Q, p: ~- \ {: | 3 j4 x, q# }. y8 _8 T% ? 因为基于 Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex 微控制器软件的兼容性问题,ARM 与芯片厂商建立了CMSIS 标准 (Cortex MicroController SoftwareInterface Standard)。 # k, ?; M. A+ e& b- _$ u CMSIS 架构1 u) I8 A' y( q3 ^; W+ i( ^ ![]() 6 W y! N' P( k! n CMSIS 标准中最主要的为 CMSIS 核心层,它包括了: • 内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由 ARM 公司提供。 • 设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。 可见 CMSIS 层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关的硬件抽象层,可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,这对软件的移植是有极大的好处的。STM32 的库,就是按照 CMSIS 标准建立的。 Libraries 文件夹中CMSIS 文件夹 , W; [. c% f* T1 q ![]() 写 STM32F4 的工程,必须用到其中的四个文件:core_cm4.h、core_cmFunc.h、corecmInstr.h、core_cmSimd.h。 ![]() 在 src 和 inc 文件夹里的就是 ST 公司针对每个 STM32 外设而编写的库函数文件,每个外设对应一个.c 和.h 后缀的文件。9 W3 E2 i2 ^9 }! A+ J. J" _ ![]() " l) L; ^5 T5 v" m2 i' m 库的各文件间的关系$ } b* c$ M" \ @. y* K ![]() % F- a( ?( p6 w N 常用官方资料 •《STM32F4xx 参考手册》 这个文件全方位介绍了 STM32 芯片的各种片上外设,它把 STM32 的时钟、存储器架构、及各种外设、寄存器都描述得清清楚楚。当我们对 STM32 的外设感到困惑时,可查阅这个文档。以直接配置寄存器方式开发的话,查阅这个文档寄存器部分的频率会相当高,但这样效率太低了。- }0 C; C& v" m; | 4 t. f( u, t7 f* j •《STM32F4xx 规格书》7 T% B2 n' F# x0 U) {/ K 本文档相当于 STM32 的 datasheet,包含了 STM32 芯片所有的引脚功能说明及存储器架构、芯片外设架构说明。后面我们使用 STM32 其它外设时,常常需要查找这个手册,了解外设对应到 STM32 的哪个 GPIO 引脚。' S5 [! K- w% M* O, k •《Cortex™-M4 内核参考手册》) ?8 T0 e# V% K! Z. W 本文档由 ST 公司提供,主要讲解 STM32 内核寄存器相关的说明,例如系统定时器、中断等寄存器。这部分的内容是《STM32F4xx 参考手册》没涉及到的内核部分的补充。相对来说,本文档虽然介绍了内核寄存器,但不如以下两个文档详细,要了解内核时,可作为以下两个手册的配合资料使用。' ]/ S: m9 g8 c2 N1 Y' e : Z5 E% C, j$ U: c5 l2 p( ~ •《Cortex-M3 权威指南》、《cortex_m4_Technical Reference Manual》。6 W3 ?, N1 e! x- Q 这两个手册是由 ARM 公司提供的,它详细讲解了 Cortex 内核的架构和特性,要深入了解 Cortex-M 内核,这是首选,经典中的经典,其中 Cortex-M3 版本有中文版,方便学习。因为 Cortex-M4 内核与 Cortex-M3 内核大部分相同,可用它来学习,而 Cortex-M4 新增的特性,则必须参考《cortex_m4_Technical Reference Manual》文档了,目前只有英文版。 h- X& O* \% B* F6 i; | •《stm32f4xx_dsp_stdperiph_lib_um.chm》! m! p* [6 c/ e& b 这个就是本章提到的库的帮助文档,在使用库函数时,我们最好通过查阅此文件来了解标准库提供了哪些外设、函数原型或库函数的调用的方法。也可以直接阅读源码里面的函数的函数说明。 e# a1 o$ n/ k4 i. p+ z |