0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HAL库和标准库的区别 HAL库与CMSIS的关系

科技绿洲 来源:网络整理 作者:网络整理 2024-12-02 14:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式系统开发中,HAL(硬件抽象层)库和标准库是两种常用的软件库,它们在功能和使用场景上有所不同。

1. 标准库

标准库,通常指的是C语言标准库,也称为libc,是一组预定义的函数,提供了基本的输入输出、数学运算、字符串处理等功能。这些函数是独立于硬件平台的,可以在不同的操作系统和硬件平台上运行。标准库的主要目的是提供一组通用的、可移植的函数,使得开发者可以专注于业务逻辑的实现,而不需要关心底层硬件的具体细节。

2. HAL库

HAL库,即硬件抽象层库,是一种专为嵌入式系统设计的软件库。它的主要目的是为不同的硬件平台提供统一的接口,使得开发者可以在不同的硬件上使用相同的代码。HAL库通常包含了一系列针对特定硬件平台的驱动程序,如GPIO、ADCUART等,这些驱动程序封装了硬件的具体实现细节,为上层应用提供了简单的调用接口。

HAL库与CMSIS的关系

CMSIS(Cortex Microcontroller Software Interface Standard)是ARM公司推出的一套针对Cortex-M系列微控制器的软件接口标准。它包括了一套核心的软件库和硬件抽象层(HAL),旨在简化Cortex-M微控制器的软件开发。

1. CMSIS核心

CMSIS核心是一套针对Cortex-M系列微控制器的软件库,它包括了一套核心的函数和数据结构,用于访问Cortex-M微控制器的特定功能,如NVIC、SysTick等。CMSIS核心的主要目的是提供一套标准化的接口,使得开发者可以在不同的Cortex-M微控制器上使用相同的代码。

2. CMSIS-HAL

CMSIS-HAL是CMSIS的一部分,它提供了一套硬件抽象层接口,用于访问Cortex-M微控制器的硬件资源,如GPIO、ADC、UART等。CMSIS-HAL的主要目的是为不同的硬件平台提供统一的接口,使得开发者可以在不同的硬件上使用相同的代码。

HAL库和CMSIS-HAL的区别

虽然HAL库和CMSIS-HAL都是硬件抽象层,但它们在设计和使用上有所不同。

  1. 设计目的 :HAL库是为嵌入式系统设计的,旨在为不同的硬件平台提供统一的接口;而CMSIS-HAL是CMSIS的一部分,专为Cortex-M系列微控制器设计,提供了一套标准化的硬件访问接口。
  2. 适用范围 :HAL库可以用于任何嵌入式系统,不仅限于Cortex-M系列微控制器;而CMSIS-HAL仅限于Cortex-M系列微控制器。
  3. 接口标准化 :CMSIS-HAL提供了一套标准化的接口,使得开发者可以在不同的Cortex-M微控制器上使用相同的代码;而HAL库的接口可能因不同的硬件平台而异。
  4. 集成度 :CMSIS-HAL是CMSIS的一部分,与CMSIS核心紧密集成,提供了一套完整的软件解决方案;而HAL库可能需要与其它软件库一起使用,以提供完整的功能。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3716

    浏览量

    133109
  • CMSIS
    +关注

    关注

    0

    文章

    41

    浏览量

    12653
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66850
  • HAL库
    +关注

    关注

    1

    文章

    121

    浏览量

    7482
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    标准C区别

    因为针对Arm的嵌入式系统,通常存储(代码)资源相对较小,为了使其能用上标准函数,工程师就针对Arm嵌入式系统,对标准C进行了优化,以减小代码量。 优化标准
    发表于 12-09 07:49

    STM32已经用标准写好的代码,怎么导入RT THREAD?

    之前已经在裸机上实现了SAE J1939协议,因为要添加IOT 功能,现在想添加RT THREAD.因为之前写裸机程序的时候用的是标准。而RT THREAD STUDIO自动生成的是HAL
    发表于 09-19 06:16

    请问hal的硬件spi,怎么修改spi时钟的占空比?

    请问hal的硬件spi,该怎么修改spi时钟的占空比呀?
    发表于 07-28 07:50

    基于STM32 HAL标准的esp8266接入机智云方案(二)

    在《基于STM32HAL标准的esp8266接入机智云方案(一)》中,我们详细介绍了硬件连接和机智云客户端的创建。本篇将重点讲解如何下载代码、分析下载的代码,并直接使用这些代码连
    的头像 发表于 05-28 18:02 1120次阅读
    基于STM32 <b class='flag-5'>HAL</b><b class='flag-5'>库</b>与<b class='flag-5'>标准</b><b class='flag-5'>库</b>的esp8266接入机智云方案(二)

    STM32已经用标准写好的代码,怎么导入RT THREAD?

    之前已经在裸机上实现了SAE J1939协议,因为要添加IOT 功能,现在想添加RT THREAD.因为之前写裸机程序的时候用的是标准。而RT THREAD STUDIO自动生成的是HAL
    发表于 05-27 06:01

    PCB标准封装文件

    PCB标准封装文件
    发表于 05-22 17:43 9次下载

    为什么无法使用HAL配置I2S?

    无法使用 HAL 配置 I2S
    发表于 04-21 07:18

    STM32开发入门进阶必备!《STM32嵌入式系统开发—基于STM32CubeMX和HAL》新书发布!

    近日,由华清远见教育科技集团精心编撰的教育部高等学校电子信息类专业教学指导委员会规划教材、普通高等教育电子信息类专业系列教材——《STM32嵌入式系统开发—基于STM32CubeMX和HAL》重磅
    的头像 发表于 04-03 14:54 1367次阅读
    STM32开发入门进阶必备!《STM32嵌入式系统开发—基于STM32CubeMX和<b class='flag-5'>HAL</b><b class='flag-5'>库</b>》新书发布!

    求助,求STM32C011J4x STM32C011J6x的标准

    一直用的标准,发现C0没有标准,都是HAL的,真的用不习惯、
    发表于 03-10 08:20

    Stm32f103 hal如果设置多个外部中断,只要用螺丝刀碰触其中一个中断线,所有的中断函数都有可能进入,乱跳,为什么?

    Stm32f103 hal如果设置多个外部中断,只要用螺丝刀碰触其中一个中断线,所有的中断函数都有可能进入,乱跳。同一个线路板用标准就没问题。正点原子的开发版及
    发表于 03-10 08:07

    HAL标准你会选择哪种

    HAL标准你会选择哪种
    发表于 03-10 06:25

    如何将HAL转为LL

    怎么将HAL转为LL
    发表于 03-10 06:08

    关系型数据和非关系区别

    关系型数据和非关系型数据在多个方面存在显著差异,主机推荐小编为您整理发布关系型数据和非
    的头像 发表于 01-10 09:58 1446次阅读

    云数据是哪种数据类型?

    云数据是一种部署在虚拟计算环境中的数据,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据服务。云数据主要分为两大类:关系
    的头像 发表于 01-07 10:22 806次阅读

    STM32CubeMX生成的代码,是怎样的HAL架构?

    需要注意,CubeMX只是一个初始化工具,它只是帮你完成了HAL外设和时钟的初始化,具体程序的编写还需要查阅HAL的说明,使用相关函数实现你想实现的功能。CubeMX生成的代码包含
    的头像 发表于 01-01 21:01 1245次阅读
    STM32CubeMX生成的代码,是怎样的<b class='flag-5'>HAL</b>架构?