STM32 固件库,CMSIS 标准,STM32Cube

STM32 固件库与 CMSIS 标准讲解

STM32F4 固件库就是函数的集合,那么对这些函数有什么要求呢?
这里就涉及到一个 CMSIS 标准的基础知识。经常有人问到 STM32 和 ARM 以及 ARM7 是什么关系这样的问题,其实 ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而 TI,ST 这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做 Cortex-M4 芯片,他们的内核结构都是一样的,不同的是他们的存储器容量,片上外设,IO 以及其他模块的区别。所以你会发现,不同公司设计的Cortex-M4 芯片他们的端口数量,串口数量,控制方法这些都是有区别的,这些资源他们可以根据自己的需求理念来设计。同一家公司设计的多种 Cortex-M4 内核芯片的片上外设也会有很大的区别,比如 STM32F407 和 STM32F429,他们的片上外设就有很大的区别。既然大家都使用的是 Cortex-M4 核,也就是说,本质上大家都是一样的,这样 ARM 公司为了能让不同的芯片公司生产的 Cortex-M4 芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准 CMSIS 标准(Cortex Microcontroller Software Interface Standard),翻译过来是ARM CortexTM 微控制器软件接口标准。ST 官方库就是根据这套标准设计的。

STM32 固件库,CMSIS 标准,STM32Cube_第1张图片

CMSIS 分为 3 个基本功能层:

  • 1 核内外设访问层: ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函数。
  • 2 中间件访问层: 定义访问中间件的通用 API。由 ARM 提供,芯片厂商根据需要更新。
  • 3 外设访问层: 定义硬件寄存器的地址以及外设的访问函数。

从图中可以看出,CMSIS 层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交
道,向上提供实时操作系统用户程序调用的函数接口。如果没有 CMSIS 标准,那么各个芯片公
司就会设计自己喜欢的风格的库函数,而 CMSIS 标准就是要强制规定,芯片生产公司设计的库
函数必须按照 CMSIS 这套规范来设计。
其实不用这么讲这么复杂的,一个简单的例子,我们在使用 STM32 芯片的时候首先要进
行系统初始化,CMSIS 规范就规定,系统初始化函数名字必须为 SystemInit,所以各个芯片公
司写自己的库函数的时候就必须用 SystemInit 对系统进行初始化。CMSIS 还对各个外设驱
动文件的文件名字规范化,以及函数名字规范化等等一系列规定

STM32 固件库 已被STM32Cube解决方案取代,后者是一种多合一的嵌入式软件产品

例如 STM32CubeF4

适用于STM32F4系列的STM32Cube MCU软件包(HAL,低层API和CMSIS(CORE,DSP,RTOS),USB,TCP / IP,文件系统,RTOS,图形-附带在ST板上运行的示例:STM32 Nucleo,发现套件和评估板)

STM32Cube是意法半导体的一项原始计划,旨在通过减少开发工作量,减少时间和成本来显着提高开发人员的生产率。STM32Cube涵盖了整个STM32产品组合。

STM32Cube包括STM32CubeMX,这是一种图形软件配置工具,允许使用图形向导生成C初始化代码。它还包括由STM32Cube硬件抽象层(HAL)和低层(LL)API组成的STM32CubeF4 MCU软件包,以及一组一致的中间件组件(RTOS,USB,FAT文件系统,图形和TCP / IP)。TouchGFX图形软件堆栈也作为STM32Cube生态系统的一部分包含在STM32CubeF4 MCU软件包中。它可免费用于STM32微控制器的生产和重新分发。提供了所有嵌入式软件实用程序,以及在STMicroelectronics板上运行的全套示例。

STM32Cube HAL是STM32嵌入式软件层,可确保在STM32产品组合中实现最大的可移植性,而LL API构成了一个快速,轻巧,面向专家的层,与HAL相比,它更接近于硬件。HAL和LL API可以同时使用,但有一些限制。HAL和LL API均已投入生产,并且已按照MISRA- C®:2004指南进行开发,但有一些已记录的例外情况(按需提供报告)和ISO / TS16949。此外,特定于ST的验证过程更加深入级资格。
STM32CubeF4将所有通用嵌入式软件组件收集到一个封装中,该组件是在STM32F4微控制器上开发应用程序所需的。遵循STM32Cube的倡议,这组组件具有高度的可移植性,不仅在STM32F4系列内,而且在其他STM32系列内也是如此。此外,低层API以可移植性和简便性为代价,为STM32CubeF4 HAL提供了替代的高性能,低占用空间的解决方案。
HAL和LL API可在开源BSD许可证中使用,以方便用户使用。

你可能感兴趣的:(嵌入式)