深入探索STM32-CMSIS软件架构(详细解读,慢工出细活)

3.1 CMSIS概述

        CMSIS是一种标准化软件接口,是独立于供应商的Cortex-M处理器硬件抽象层,为微处理器和外设实现一致且简单的软件接口,简化了软件复用,降低了操作系统的移植难度,同时也缩短了新开发人员学习的时间,更能减低开发成本。

        CMSIS软件架构由4层构成:用户应用层、操作系统及中间件接口层、CMSIS层和硬件层,如下图所示。

        其中,CMSIS层主要由3部分组成:

        (1)核内外设访问层CPAL:由ARM公司实现,包括了命名定义、地址定义、存取内核寄存器和外围设备的协助函数,同时定义一个与设备无关的RTOS内核接口函数。

        (2)中间件访问层MWAL:由ARM公司实现,芯片厂商提供更新,主要负责当以中间件访问的应用编程接口API函数,如TCP/IP协议栈、SD/MMC、USB等协议。

        (3)设备外设访问层DPAL:由芯片厂商实现,负责对硬件寄存器地址及外设接口进行定义,另外厂商会对异常向量进行扩展,以处理相应异常。

3.2 STM32F10x标准外设库

        STM32F10x标准外设库(也称固件库)是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所由外设的性能特征,而且包括每一个外设的驱动描述和应用实例,同构使用该固件函数库无需深入掌握细节便可开发每一个外设。

        每一个外设驱动都有一组函数组成,这组函数覆盖了该外设所有功能,每个器件的开发都由一个通用API驱动,API对该程序的结构、函数和参数名都进行了标准化。因此,对于多数程序来说,我们都可以直接使用。STM32的标准库的命名都遵循一定的命名规则,其中各种外设缩写表如下图所示:

外设缩写表
缩写 外设名称 缩写 外设名称
ADC 模数转换器 IIS IIS音频总线接口
BKP 备份寄存器 IWDG 独立看门狗
CAN CAN控制器 NVIC 嵌套向量中断控制器
CRC CRC计算单元 PWR 电源控制
DMA DMA控制器 RCC 复位和时钟
EXTI 外部中断 RTC 实时时钟
SYSTICK 系统定时器 SDIO SDIO接口
Flash Flash存储器 SPI SPI接口
GPIO 通用引脚 FSMC 静态存储控制器
IIC IIC接口 TIM 定时器
DAC 数模转换器 USART 串口
DBGMCU MCU调试模块 WWDG 窗口看门狗

        系统相关的源程序文件和头文件都以“stm32f10x_”开头,如stm32f10x.h。外设函数的命名以该外设的缩写加下划线开头,用以分隔外设缩写和函数名,函数名的每个单词的第一个字母大写,如GPIO_SetBits;STM32标准库中包含两个文件夹,分别为Librares和Project。

        1. CMSIS和STM32F10x_StdPeriph_Driver组成Libraries文件:

        (1)core_cm3.c和core_cm4.h分别是核内外设访问层的源文件和头文件。作用是为采用Cortex-M3内核的芯片外设提供进入M3内核的接口。

        (2)stm32f10x.h是设备外设访问层头文件。

        (3)system_stm32f10x.c和system_stm32f10x.h分别是设备外设访问层的源文件和头文件。

        (4)startup_stm32f10x_X.s是用汇编鞋的系统启动文件,X代表了不同的芯片型号,使用时要与芯片对应。

        (5)stm32f10x_ppp.c和stm32f10x_ppp.h分别为外设驱动源文件和头文件,ppp代表不同ing的外设,使用的时候将其加入到工程即刻。

        (6)misc.c和misc.h提供了外设对内核中的中断向量控制器NVIC的访问函数,在配置中断时,必须把这个文件加入到工程中。

        2. Project文件夹下是采用标准库写的一个工程模板和例子

        (1)其中比较重要的是stm32f10x_it.c和stm32f10x_it.h源文件和头文件,是用来编写中断服务函数。

        (2)stm32f10x_conf.h文件被包含进stm32f10x.h文件,用来配置使用了外设的头文件,用这个头文件可以方便地增加和删除外设驱动函数。

作者:嵌入式小白儿

物联沃分享整理
物联沃-IOTWORD物联网 » 深入探索STM32-CMSIS软件架构(详细解读,慢工出细活)

发表回复