这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » [经验] STM32入门系列-CMSIS标准

共3条 1/1 1 跳转至

[经验] STM32入门系列-CMSIS标准

工程师
2019-09-17 17:34:03     打赏
使用寄存器点亮开发板上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,此函数名也是不能随便定义的。





关键词: STM32     入门     函数    

高工
2019-09-17 23:20:06     打赏
2楼

学习一下


工程师
2019-09-18 14:01:56     打赏
3楼

谢谢分享 学习一下


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]