STM32入门系列-CMSIS标准
Posted stm32-c
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 标准介绍,大家可以在网上搜索下。
以上是关于STM32入门系列-CMSIS标准的主要内容,如果未能解决你的问题,请参考以下文章