使用寄存器点亮开发板上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 标准介绍,大家可以在网上搜索下。

最新文章

  1. Netty In Action
  2. commonJS 浏览器实现
  3. Windows 磁盘检查命令
  4. express-partials与express4.x不兼容问题
  5. jquery常用正则表达式
  6. Puppet Openstack Mitaka Design Summit小结
  7. Codevs 1205 单词翻转
  8. 05_XML的解析_01_dom4j 解析
  9. MySQL基本配置
  10. smarty、thinkphp中的html加载其他的html文件的方式
  11. 你好,C++(22) 排排坐,吃果果——4.3.3 for循环:某个范围内…每个都…
  12. C# 文件帮助类
  13. CentOS7 配置花生壳开机启动
  14. Ubuntu 将其他盘挂载到/home的子目录下
  15. 洛谷 P1392 取数
  16. 自定义UIProgressView
  17. Why database migrations?
  18. 使用jQuery模拟鼠标点击a标签事件
  19. C++ OI图论 学习笔记(初步完结)
  20. C++解析-外传篇(3):动态内存申请的结果

热门文章

  1. spring @value和@@PropertySource注解简单使用
  2. 重启springboot
  3. Django新手图文入门教程
  4. matlab中subplot 在平铺位置创建坐标区
  5. 完全小白入门:python的下载和安装
  6. 配置adpate的方式
  7. Java安全之Commons Collections1分析(一)
  8. Java之微信支付(扫码支付模式二)案例实战
  9. 洛谷 P6851 【onu】贪心
  10. 联赛模拟测试12 B. trade