STM32入门系列-CMSIS标准

 使用寄存器点亮开发板上LED,这种开发方式显然是不适合大众,对于STM32这样庞大的芯片,内部寄存器实在太多,如果操作的外设比较多,那么就需要花很多时间查询底层寄存器内容,而且即使程序写好,如果要换其他端口或者外设的话,修改起来非常麻烦,而且容易出错,移植性也差。基于这些原因,ST公司推出了一套固件库,内部已经将STM32的全部外设寄存器的控制封装好,给用户提供一些API函数,用户只需要学习如何使用这些API函数即可。

CMSIS标准

    CMSIS标准英文全称是Cortex MicroController Software Interface Standard,翻译为中文意思就是ARM Cortex微控制器软件接口标准。由于基于Cortex核的芯片厂商很多,不只是ST公司,为了解决不同厂家的Cortex核芯片软件兼容的问题,ARM和这些厂家就建立了这套CMSIS标准。可以通过一个基于CMSIS标准的应用程序框图来看其重要性,如下图所示。

    可以看出,CMSIS处于中间层,向上提供给用户程序和实时操作系统所需的函数接口,向下负责与内核和其他外设通信。假如没有CMSIS标准,基于Cortex的芯片厂商就会设计出自己喜欢的风格库函数。因此CMSIS标准就是要强制他们必须按照这个标准来设计。

    在CMSIS框架内又分为3个基本功能层:

  • 核内外设访问层:ARM公司提供的访问,定义处理器内部寄存器地址以及功能函数。

  • 中间件访问层:定义访问中间件的通用API,由ARM提供,芯片厂商根据需要更新。

  • 外设访问层:定义硬件寄存器的地址以及外设的访问函数,比如ST公司提供的固件库外设驱动文件(stm32f10x_gpio.c 等文件)就是在这个访问层。

    总之,CMSIS就是统一各芯片厂商固件库内函数的名称, 比如在系统初始化的时候使用的是SystemInit这个函数名,那么CMSIS标准就是强制所有使用Cortex核设计芯片的厂商内固件库系统初始化函数必须为这个名字,不能修改。又比如对GPIO口输出操作的函数:GPIO_SetBits,此函数名也是不能随便定义的。更多关于CMSIS 标准介绍,大家可以在网上搜索下。

posted @ 2020-10-25 17:42  STM32嵌入式开发  阅读(1234)  评论(0编辑  收藏  举报