什么是CMSIS || 标准库与HAL库

一,ARM(Cortex Microcontroller Software Interface          Standard)

          ARM Cortex™ 微控制器软件接口标准(Cortex Microcontroller Software Interface Standard)是 CortexM 处理器系列的与供应商无关的硬件抽象层。使用CMSIS,可以为处理器和外设实现一致且简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。

        ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而TI、ST这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做 Cortex M3 芯 片 ,他们的内核结构都是一样的,不同的是他们的存储器容量, 片上外设 IO 以及其他模块的区别

二,标准库与HAL库

        1  . 寄存器

                ·寄存器众多,需要经常翻阅芯片手册,费时费力;

               ·更大灵活性,可以随心所欲达到自己的目的;

                ·深入理解单片机的运行原理,知其然更知其所以然。

        2. 标准库

                ·将寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用

                ·每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的

                ·配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能;

                ·大大降低单片机开发难度,但是在不同芯片间不方便移植。

        3. HAL库(Hardware Abstraction Layer)

                ST公司目前主力推的开发方式,新的芯片已经不再提供标准库;

                为了实现在不同芯片之间移植代码

                为了兼容所有芯片,导致代码量庞大,执行效率低下。

三,常见文件意义

        startup_stm32f102xb.s

                启动文件,用于初始化硬件、设置堆栈和中断向量表,然后跳转到 C/C++ 的主程序入口点( main 函数)。

        stm32f1xx_it.c

                中断服务例程文件,它包含了处理各种中断的 C 语言函数实现,例如定时器中断、外部中断等

        system_stm32f1xx.c

                定义了系统初始化函数 SystemInit 和系统时钟更新函数SystemCoreClockUpdate

        sm32f1xx_hal.c

                HAL库初始化、系统滴答、HAL库延时等相关函数

        stm32f1xx_hal_cortex.c

                内核通用函数定义和声明,如NVIC、MPU、系统软复位、Systick等,其实主要是对core_cm3.h 文件的相关函数再次封装。

        stm32f1xx.h

                是所有F1系列的顶层头文件,通过条件编译来包含某个芯片的头文件,定义通用的枚举类型,定义通用的宏定义

        stm32f103xb.h

                包含:中断编号定义、外设寄存器结构体类型定义、寄存器映射、寄存器位定义、外设判定

        stm32f1xx_hal_conf.h

                HAL库的用户配置文件,用于裁剪HAL库、配置晶振参数等

        stm32hxx_hal_def.h

                包含HAL库通用的枚举类型数据和宏定义

        stm32f1xx_hal_ppp.c

                某任意外设驱动源码,PPP表示任意外设

        stm32f1xx_hal_ppp_ex.c

                主要是存放外设的扩展(特殊)功能的驱动源码,PPP表示任意外设

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32标准库HAL库都是针对STM32系列微控制器的库,但是它们的设计思路和使用方法有所不同。STM32标准库是由ST公司提供的一套基于寄存器操作的低层驱动库,而HAL库则是基于标准库的封装,提供了更加高级的API接口,使得开发者可以更加方便地进行开发。 具体来说,STM32标准库主要包括以下几个部分: 1. CMSIS(Cortex Microcontroller Software Interface Standard):这是一套由ARM公司提供的针对Cortex-M系列微控制器的标准接口,包括了一些通用的API接口和一些与具体芯片相关的头文件和链接脚本等。 2. 寄存器操作库:这是STM32标准库的核心部分,通过对芯片内部寄存器的直接操作,实现了对外设的控制和数据传输等功能。 3. 外设驱动库:这是对一些常用外设(如USART、SPI、I2C等)的封装,提供了更加方便的API接口,使得开发者可以更加方便地进行开发。 相比之下,HAL库则提供了更加高级的API接口,使得开发者可以更加方便地进行开发。HAL库主要包括以下几个部分: 1. HAL库核心:这是HAL库的核心部分,提供了一些通用的API接口,如时钟配置、中断控制等。 2. 外设驱动库:这是对一些常用外设(如USART、SPI、I2C等)的封装,提供了更加方便的API接口,使得开发者可以更加方便地进行开发。 3. 扩展库:这是一些额外的功能库,如USB库、文件系统库等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值