ST(意法半导体)为了方便用户开发程序,提供了一套丰富的 STM32 固件库。固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API) 。固件库将这些寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用,大多数场合下,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些函数即可。

ARM 公司为了能让不同的芯片公司生产的 Cortex-M3 芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准 CMSIS 标准(Cortex  Microcontroller  Software  Interface  Standard)  ,翻译过来是“ARM Cortex?  微控制器软件接口标准”。 ST 官方库就是根据这套标准设计的。

CMSIS 分为 3 个基本功能层:

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

2)  中间件访问层:定义访问中间件的通用 API,也是 ARM 公司提供。

3)  外设访问层:定义硬件寄存器的地址以及外设的访问函数。

CMSIS 层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。如果没有 CMSIS 标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而 CMSIS 标准就是要强制规定,芯片生产公司设计的库函数必须按照 CMSIS 这套规范来设计。

一个简单的例子,我们在使用 STM32 芯片的时候首先要进行系统初始化, CMSIS 规范就规定,系统初始化函数名字必须为 SystemInit,所以各个芯片公司写自己的库函数的时候就必须用 SystemInit 对系统进行初始化。CMSIS 还对各个外设驱动文件的文件名字规范化,以及函数名字规范化等等一系列规定。

ST 官方提供的固件库完整包可以在官方下载,固件库是不断完善升级的,所以有不同的版本,我们使用的是 V3.5 版本的固件库,STM32F10x_StdPeriph_Lib_V3.5.0  下面查看

文件夹介绍:

Libraries 文件夹下面有 CMSIS 和 STM32F10x_StdPeriph_Driver 两个目录,这两个目录包含 固 件 库 核 心 的 所 有 子 文 件 夹 和 文 件 。 其 中 CMSIS 目 录 下 面 是 启 动 文 件 ,STM32F10x_StdPeriph_Driver 放的是 STM32 固件库源码文件。源文件目录下面的 inc 目录存放的是 stm32f10x_xxx.h 头文件,无需改动。src 目录下面放的是 stm32f10x_xxx.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应。这里的文件也是固件库的核心文件,每个外设对应一组文件。

Libraries 文件夹里面的文件在我们建立工程的时候都会使用到。

Project 文件夹下面有两个文件夹。顾名思义, STM32F10x_StdPeriph_Examples 文件夹下面存放的 ST 官方提供的固件实例源码,在以后的开发过程中,可以参考修改这个官方提供的实例来快速驱动自己的外设,很多开发板的实例都参考了官方提供的例程源码,这些源码对以后的学习非常重要。STM32F10x_StdPeriph_Template 文件夹下面存放的是工程模板。

Utilities 文件下就是官方评估板的一些对应源码,这个可以忽略不看。

根目录中还有一个 stm32f10x_stdperiph_lib_um.chm 文件,直接打开可以知道,这是一个固件库的帮助文档,这个文档非常有用,只可惜是英文的,在开发过程中,这个文档会经常被使用到。

关键文件介绍:

下面我们要着重介绍 Libraries 目录下面几个重要的文件。core_cm3.c 和 core_cm3.h 文件位于\Libraries\CMSIS\CM3\CoreSupport 目录下面的,这个就是 CMSIS 核心文件,提供进入 M3 内核接口,这是 ARM 公司提供,对所有 CM3 内核的芯片都一样。你永远都不需要修改这个文件,所以这里我们就点到为止。

和 CoreSupport 同一级还有一个 DeviceSupport 文件夹。eviceSupport\ST\STM32F10xt 文件夹下面主要存放一些启动文件以及比较基础的寄存器定义以及中断向量定义的文件。这个目录下面有三个文件:system_stm32f10x.c,  system_stm32f10x.h 以及 stm32f10x.h 文件。其中 system_stm32f10x.c 和对应的头文件 system_stm32f10x.h 文件的功能是设置系统以及总线时钟,这个里面有一个非常重要的 SystemInit()函数,这个函数在我们系统启动的时候都会调用,用来设置系统的整个时钟系统。

stm32f10x.h 这个文件就相当重要了,只要你做 STM32 开发,你几乎时刻都要查看这个文件相关的定义。这个文件打开可以看到,里面非常多的结构体以及宏定义。这个文件里面主要是系统寄存器定义申明以及包装内存操作,对于这里是怎样申明以及怎样将内存操作封装起来的

基于从ARMv6开始的新设计理念,ARM进一步扩展了它的CPU设计,成果就是ARMv7架构的闪亮登场。在这个版本中,内核架构首次从单一款式变成3种款式。

一、款式A:设计用于高性能的“开放应用平台”——越来越接近电脑了

二、款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要实时。

三、款式M:用于深度嵌入的,单片机风格的系统中。

让我们再进距离地考察这3种款式:

款式A(ARMv7‐A):需要运行复杂应用程序的“应用处理器”支持大型嵌入式操作系统(不一定实时——译注),比如Symbian(诺基亚智能手机用),Linux,以及微软的Windows CE和智能手机操作系统Windows Mobile。这些应用需要劲爆的处理性能,并且需要硬件MMU实现的完整而强大的虚拟内存机制,还基本上会配有Java支持,有时还要求一个安全程序执行环境(用于电子商务——译注)。典型的产品包括高端手机和手持仪器,电子钱包以及金融事务处理机。 如:Cortex‐A8(应用处理器)

款式R(ARMv7‐R):硬实时且高性能的处理器。标的是高端实时市场。那些高级的玩意,像高档轿车的组件,大型发电机控制器,机器手臂控制器等,它们使用的处理器不但要很好很强大,还要极其可靠,对事件的反应也要极其敏捷。 如:Cortex‐R4(实时处理器)。

款式M(ARMv7‐M):认准了旧世代单片机的应用而量身定制。在这些应用中,尤其是对于实时控制系统,低成本、低功耗、极速中断反应以及高处理效率,都是至关重要的。Cortex系列是v7架构的第一次亮相,其中Cortex‐M3就是按款式M设计的。

到了架构7时代,ARM改革了一度使用的,冗长的、需要“解码”的数字命名法,转到另一种看起来比较整齐的命名法。比如,ARMv7的三个款式都以Cortex作为主名。

Cortex-M3处理器的舞台相关推荐

  1. Cortex M3处理器工作模式及中断过程

    来自::http://blog.csdn.net/ffgamelife/article/details/6947300 1.      工作模式 线程模式(Thread mode):处理器复位或异常退 ...

  2. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  3. cortex m3/m4处理器的复位设计

    cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分.core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分.de ...

  4. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  5. Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...

  6. Cortex M3 Bit-banding简介

    http://blog.csdn.net/shevsten/article/details/7676397 Cortex M3 Bit-banding简介 分类: ARM MCU2012-06-19 ...

  7. 新年开工第一篇文章——推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器

    //toppic:推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器 // 作者:gooogleman //原文地址:http://blog.csdn.net/goooglema ...

  8. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  9. Cortex‐M3的Faults异常究竟是什么?

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 有许多朋友在学习,或者开发STM32时都遇到过HardFault_Handler的情 ...

最新文章

  1. 中文企业云操作系统 CecOS
  2. Android之ExpandableListView的各种效果(默认展开不合闭,自定义父栏目及箭头控制)
  3. 今日arXiv精选 | 28篇EMNLP 2021最新论文
  4. 每日算法C语言1-求某整数
  5. IIS 7.5 Express概况
  6. Groovy获取json和xml数据
  7. [luogu2680] 运输计划 (lca+二分+树上差分)
  8. 9.数据库服务器部署之------3步实现远程访问
  9. 并发编程-------操作系统的发展
  10. 淘宝为什么不该自己做团购
  11. 什么软件可以让头发变黑_头发特别干枯毛躁,请问什么方法可以让头发恢复到顺滑状态?...
  12. esp32 esp8285 wf6000OTA升级小记
  13. 搜索题集整理(DFSBFS)
  14. PCB多层板设计规范
  15. magicbook2018+MX150+win10+显卡驱动445.87+cuda_10.0.130+cudnn_v7.6.4.38+conda4.8.3+tensorflow1.14.0
  16. Linux报错 tar: Error Is Not Recoverable: Exiting Now
  17. ORACLE数据库练习题整理(2)
  18. Java程序员必看经典书籍,助你早日打通任督二脉,Java菜鸟教程视频
  19. AsyncTask实例
  20. 计算机毕业设计springboot+vue基本微信小程序的小区防疫监管系统

热门文章

  1. html图片长高如何设置,快速长高的方法 教你一个动作暴长10cm
  2. android拓展笔记本,有道笔记Android版上线,拓展移动终端产品布局
  3. TSP问题——启发式算法求解
  4. win10怎么找回永久删除的文件
  5. 百度细雨算法2.0正式上线
  6. PwC上海AC面经-助理软件工程师(英语)
  7. 使用javascript抓取网站数据
  8. Lucas Kanade 光流法(来自wiki 百科)
  9. DXP的使用及绘制PCB
  10. JZOJ5454. 【NOIP2017提高A组冲刺11.5】仔细的检查