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

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

3天内不再提示

关于STM32的四类嵌入式软件 (库)

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-04 09:27 次阅读

关注我的朋友中,初学者比较多,今天就写点基础知识。

1写在前面

陆续收到一些朋友的问题:

1.我是选择寄存器开发STM32,还是标准外设库呢?

2.你有STM32L0标准外设库吗?

3.HAL库和LL库有什么差异?

。。。

针对STM32开发使用的嵌入式软件,或者我们说的库,可以分为四类:

STM32Snippets

Standard Peripheral Library

STM32Cube HAL

STM32Cube LL

下面就写一下关于这四种库的相关内容、以及对比应用等。

2

STM32Snippets

什么是STM32Snippets?

STM32Snippets是高度优化的代码示例集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。

每个STM32系列的100多个片段演示了如何以最小的内存占用有效地使用STM32外围设备。

地址:

https://www.st.com/en/embedded-software/stm32snippets.html?querycriteria=productId=LN1898

STM32Snippets可以理解为我们常说的“寄存器”开发STM32的底层驱动代码。

主要针对的底层开发人员,或者从51转过来,直接操作寄存器开发的人员。 是没有经过封装,可见底层寄存器的一套示例代码。


STM32Snippets目前官方只提供:STM32F0和L0的示例代码包。

3

Standard Peripheral Library

Standard Peripheral Library:简写SPL,也叫标准外设库。

标准外设库相信学习过STM32的朋友都不陌生,是一组外围设备的C语言代码集合。

标准外设库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。

地址:

https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html?querycriteria=productId=LN1939

目前标准外设库支持STM32F0、 F1、 F2、 F3、 F4、 L1,不支持F7、 H7、 L0、 L4、 G0等系列。

所以,不要再问:在哪里下载L0的标准外设库了。

4

STM32Cube HAL 和 LL

HAL:Hardware Abstraction Layer,硬件抽象层库

LL:Low-Layer,底层库

STM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。

HAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。

LL库相对HAL,具有简单的结构,针对之前从事SPL,或寄存器开发的人员。

地址:

https://www.st.com/stm32cubemx

最近新增了STM32Cube MP1。

STM32Cube HAL 和 LL是目前官方重点维护和更新的库,也建议大家都学习一下。而且新出来的型号(如L4、G0等)就只有STM32Cube HAL 和 LL库了。

5

四种库对比

来自官方的对比信息,包含可移植性、优化、难以程度等。

其中:

Portability:可移植性

Optimization :优化

Easy:难易程度

Hardware coverage:硬件覆盖


定位:

支持器件:

最近新增了STM32Cube MP1,官方没有统计上。

库之间的转移:

本文就到这里,希望以上内容对你有所帮助!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19009

    浏览量

    303052
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354716
  • stm32cubemx
    +关注

    关注

    5

    文章

    280

    浏览量

    14746
  • HAL库
    +关注

    关注

    1

    文章

    114

    浏览量

    6168
收藏 人收藏

    评论

    相关推荐

    什么是嵌入式?一文读懂嵌入式主板

    在现代科技浪潮中,嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件和软件嵌入
    的头像 发表于 10-16 10:14 479次阅读

    一种常用嵌入式开发代码

    使用开源协议:GPL-2.0varch简介varch(we-architecture,意为我们的框架)是嵌入式C语言常用代码模块,包含了嵌入式中常用的算法库,数据结构(容器)
    的头像 发表于 09-04 08:06 371次阅读
    一种常用<b class='flag-5'>嵌入式</b>开发代码<b class='flag-5'>库</b>

    七大嵌入式GUI盘点

    LCD设计提供高级支持,极大简化了LCD设计。它是使用比较广泛的一款GUI,配合GUI Builder或App Wizard上位机软件,用起来也比较方便。emWin以C语言源代码提供,使其成为嵌入式
    发表于 09-02 10:58

    嵌入式软件开发与AI整合

    嵌入式软件开发与AI整合是当前技术发展的重要趋势之一。随着人工智能技术的快速发展,嵌入式系统越来越多地集成了AI算法,以实现更复杂的智能功能。以下是关于
    的头像 发表于 07-31 09:25 655次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>开发与AI整合

    如何获取STM32MP157的嵌入式Linux的OpenGL

    请问,如何获取STM32MP157的嵌入式Linux的OpenGL
    发表于 05-27 07:27

    如何获取STM32MP157的嵌入式Linux的OpenGL

    请问,如何获取STM32MP157的嵌入式Linux的OpenGL
    发表于 03-15 07:21

    嵌入式人工智能的就业方向有哪些?

    的发展方向有很多,门槛高低不一样。下面给大家列举一些相应岗位所需具备的技能: 一:嵌入式Linux,C语言开发工程师,Linux软件开发工程师 LinuxC语言开发 LinuxC语言开发进阶 Linux
    发表于 02-26 10:17

    嵌入式软件设计的原则分享

    嵌入式软件开发如果具有更好的阅读性、扩展性以及维护性,就需要考虑很多因素。今天给大家分享几个嵌入式软件设计的原则。
    发表于 02-25 10:54 647次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>设计的原则分享

    嵌入式软件开发和软件开发的区别

    嵌入式软件开发和软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入
    的头像 发表于 01-22 15:27 2159次阅读

    基于功能安全的汽车嵌入式软件单元验证技术研究

    随着汽车嵌入式软件功能的不断叠加,软件复杂性不断提升,对汽车嵌入式软件的安全性提出了更高要求,基于功能安全的
    的头像 发表于 01-07 11:27 1004次阅读
    基于功能安全的汽车<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>单元验证技术研究

    基于Rust的嵌入式符合ACID的键值数据

    surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的键值数据
    的头像 发表于 12-28 11:29 855次阅读

    聊聊嵌入式软件分层

    今天以控制LED闪烁为例,聊聊嵌入式软件分层
    的头像 发表于 12-28 09:22 634次阅读

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 627次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>工程师常用的

    嵌入式硬件和软件哪个好?

    方案,要求理解嵌入式系统架构,有一定的C语言基础,熟悉ARM、protel设计软件,有层板开发经验。 成为优秀的嵌入式硬件开发工程师需具备以下技能:由需求分析至总体方案、详细设计的规
    发表于 12-05 15:17

    嵌入式C语言的结构特点

    嵌入式开发中既有底层硬件的开发又涉及上层应用的开发,即涉及系统的硬件和软件,C语言既具有汇编语言操作底层的优势,又具有高级语言功能性强的特点,当之无愧地成为嵌入式开发的主流语言。在 STM32
    的头像 发表于 11-24 16:16 638次阅读
    <b class='flag-5'>嵌入式</b>C语言的结构特点