stm32开发层次介绍(转载)

article/2025/8/26 1:48:42

自STM32标准库出道以来,备受广大工程师和公司的喜爱,但是,从2013年开始,ST逐渐停止了对标准外设库的更新和维护。目前,ST全力推崇HAL库,STM32Cube就是与HAL库配合使用图形化编程官方IDE。

7.1 STM32库简介

到目前为止,ST有标准外设库(SPL 库)、HAL 库、LL 库 三种。前两者都是常用的库,后面的 LL 库是 ST 最近才添加,随 HAL 源码包一起提供,目前支持的芯片也偏少。各库如下所示:

在这里插入图片描述

图1 标准库、HAL 库、LL 库对比

其中,SPL 库 和 HAL 库两者相互独立,互不兼容。几种库的比较如下:

在这里插入图片描述

图2

目前几种库对不同芯片的支持情况如下:

在这里插入图片描述

图3

ST 中文官网上有一篇《STM32库函数性能对比》的文章,其中对比了各种库的性能如下:

在这里插入图片描述

图4 ST各库性能对比

7.1.1标准外设库简介

标准外设库(Standard Peripherals Library)是对 STM32 芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的 ST 库。几乎全部使用 C 语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。STM32F1系列的版本停留在3.5.0,这个版本也许是大家最熟悉的版本。
在这里插入图片描述

图5标准外设库支持程度

标准外设库仍然接近于寄存器操作,主要就是将一些基本的寄存器操作封装成了 C 函数。开发者需要关注所使用的外设是在哪个总线之上,具体寄存器的配置等底层信息。虽然标准外设库对各外设的进行了一次封装,而不是仅仅局限在对寄存器的封装。实现了各外设的基本操作接口。

标准外设库的文件基本架构并不复杂。下图显示了 STM32F10xx 标准外设库文件的基本架构
在这里插入图片描述

图6

ST 为各系列提供的标准外设库稍微有些区别。例如,STM32F1x 的库和 STM32F3x 的库在文件结构上就有些不同,此外,在内部的实现上也稍微有些区别,这个在具体使用(移植)时,需要注意一下!但是,不同系列之间的差别并不是很大,而且在设计上是相同的。STM32 的标准外设库涵盖以下 3 个抽象级别:

 包含位,位域和寄存器在内的完整的寄存器地址映射
 涵盖所有外围功能(具有公共API的驱动器)的例程和数据结构的集合。
 一组包含所有可用外设的示例,其中包含最常用的开发工具的模板项目。

7.1.2 HAL库简介

HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。HAL库是ST为STM32最新推出的抽象层嵌入式软件。可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。目前,HAL库已经支持STM32全线产品。

HAL 库是基于一个非限制性的 BSD 许可协议(Berkeley Software Distribution)而发布的开源代码。 ST 制作的中间件堆栈(USB 主机和设备库,STemWin)带有允许轻松重用的许可模式, 只要是在 ST 公司的 MCU 芯片上使用,库中的中间件(USB 主机/设备库,STemWin)协议栈即被允许随便修改,并可以反复使用。至于基于其它著名的开源解决方案商的中间件(FreeRTOS,FatFs,LwIP和PolarSSL)也都具有友好的用户许可条款。

在这里插入图片描述

图7 HAL库支持的中间件

目前,结合HAL库,ST对其产品线构建的软件架构如下图所示。
在这里插入图片描述

图8 HAL库软件架构

7.1.3 LL库简介

LL库(Low Layer)是 ST 最近新增的库,与 HAL 库捆绑发布,文档也是和 HAL 库文档在一起的,比如:在STM32F3x 的 HAL 库说明文档中,ST 新增了LL库这一章节,但是在 F2x 的HAL文档中就没有。

LL 库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器。其支持所有外设。使用方法:

 独立使用,该库完全独立实现,可以完全抛开 HAL 库,只用LL库编程完成。在使用STM32CubeMX生成项目时,直接选LL库即可。如果使用了复杂的外设,例如 USB,则会调用 HAL 库
 混合使用,和 HAL 库结合使用。

目前,CubeMX 在生成项目时,可以选择采用 LL 库。
LL 库文件的命名方式和 HAL 库基本相同。个人感觉,LL 库就是原来的标准外设库移植到 Cube下的新的实现,但是其实现方法更加高效、简洁。使用 LL 库编程和使用标准外设库的方式基本一样,但是确会得到比标准外设库更高的效率。

7.2 STM32Cube产品简介

STM32Cube 产品是一个软件系列,目前有四个STM32CubeMX、STM32CubeIDE、STM32CubeProgrammer和STM32CubeMonitor,包括,几乎涵盖了ST系列的所有工具,ST还为此注册了一个新商标:STMCube™。

在这里插入图片描述

图9 STM32Cube

使用以上四个工具进行开发,基本就能解决开发过程的所有问题,下图是ST提供的标准软件开发流程。

在这里插入图片描述

图10 ST标准开发流程

7.2.1 STM32CubeMX简介

ST专门为其开发了配套的桌面软件 STMCubeMX,也就是初始化代码生成器,开发者可以直接使用该软件进行可视化配置,大大节省开发时间。
在这里插入图片描述

图11 STM32CubeMX

这其中就包含了 HAL 库和最近新增的 LL 库。如下图:
在这里插入图片描述

图12

从上图不难看出,LL 库和 HAL 库两者相互独立,只不过 LL 库更底层。而且,部分 HAL 库会调用LL库(例如:USB驱动)。同样,LL 库也会调用 HAL 库。

用户可以使用 STMCubeMX 直接生成对应芯片的整个项目(目前主流开发工具的项目基本全支持),STMCubeMX 负责给整理各种需要的源码文件。如下所所示。
在这里插入图片描述

图13 STM32CubeMX生成代码过程

STM32CubeMX下载地址:
英文
中文

7.2.2 STM32CubeIDE简介

STM32CubeIDE是一个多功能的集成开发工具,集成了TrueSTUDIO和STM32CubeMX,它是STM32Cube软件生态系统的一部分。

在这里插入图片描述

图14 STM32CubeIDE

STM32CubeIDE是一个先进的C/C++开发平台,具有STM32微控制器的IP配置,代码生成,代码编译和调试功能。它基于ECLIPSE™/ CDT框架和用于开发的GCC工具链,以及用于调试的GDB。它允许集成数百个现有插件,完成ECLIPSE™IDE的功能。

STM32CubeIDE集成了STM32CubeMX,基于基于Eclipse™/CDT,支持ECLIPSE的™插件,GNU C / C ++中ARM®工具链和GDB调试器,支持ST-LINK和J-Link调试探针,跨平台,支持Windows,Linux和MacOS操作系统。

[ps] 我想大部分嵌入式爱好者使用的是MDK和IAR做开发,大部分应该都使用的是盗版的。 除了这些盗版IDE集成开发环境,其实我们还有另外一种选择,使用Linux开发,在Linux开发是基于GCC的,使用GCC就意味着要写Makefile,这一连串的新问题又来了,为了解决盗版问题,ST和NXP都推出了基于Eclipse+GCC的集成开发环境。 NXP的叫MCUXpresso IDE。 ST的就是STM32Cube IDE。STM32Cube IDE就是集成了STM32CubeMX,可以一站式开发,非常方便,而且是免费的,因此你是ST的爱好者,就用STM32Cube IDE开发。

7.2.3 STM32CubeProgrammer简介

STM32CubeProgrammer 简称 STM32CubeProg,是一个适用于 STM32 系列产品的跨平台、多合一的程序烧写工具。

 “跨平台” 体现在支持 Windows、macOS 和 Linux 操作系统,因此软件运行时需要 Java 环境。
 “多合一” 体现在支持通过 USB、ST-LINK、UART、OTA 多种方式来烧写固件。

在这里插入图片描述

图15 STM32CubeProgrammer

STM32CubeProgrammer下载地址:

英文
中文

7.2.4 STM32CubeMonitor简介

STM32CubeMonitor是ST近期推出一款实时读取和显示变量来帮助调试和诊断STM32应用程序的工具。用户只要用鼠标拖放项目和功能,即可创建自定义的仪表板,快速添加仪表、柱状图、点线图等小工具也无需编程。借助Node-RED开放社区,STM32CubeMonitor可为客户提供丰富的扩展功能,灵活处理各种类型的应用问题。

在这里插入图片描述

图16 STM32CubeMonitor

STM32CubeMonitor还支持远程数据采集,用户可以通过网络远程监视应用程序,同时测试多个设备。

哪里有需求,那你就有产品,STM32CubeMonitor推出也有其目的,这里举个例子,我门在调试惯性导航时,需要实时查看惯性导航输出数据,我门通常使用串口输出到PC,然后在PC上写一个上位机进行调试,你还可以利用JLink的RTT功能把数据输出到PC,从而避免额外配置和占用STM32的一个串口。上面提到的方法都有各自的局限性,使用串口通用性很好但是串口传输数据会占用CPU资源,编写上位机绘制曲线往往也耗时耗力,而商业IDE和JLink严格意义上说并不是免费的,那么有没有免费而且好用的选择呢?这也就是STM32CubeMonitor存在的意义。

STM32CubeMonitor下载地址:

英文
中文


http://chatgpt.dhexx.cn/article/tv3kCla1.shtml

相关文章

STM32开发

ST意法半导体生产的32位MCU(微控制器) 硬件 NB-loT通信扣板:SMA天线,NB86-G通信模块,STM32F0主控芯片,外部晶振 一键还原底板:供电电路,LED指示灯,电源开关,五…

在 keil 建立基于STM32开发的工程模板--详细步骤

手把手教你在keil建立STM32的工程模板 1 先说几句1.1 什么是STM32?1.2 什么是cortex?1.3 什么是ARM?1.4 什么是意法半导体? 2 硬件平台2.1 STM32103C8T6最小系统板2.2 电源供电2.3 时钟电路2.4 复位电路2.5 调试和下载电路 3 建立工程模板3.…

STM32开发方式及基本介绍

相关推荐STM32新建一个工程 STM32的开发有三种方式 1.寄存器版本 2.库函数版本 3.HAL库版本 一、库函数开发与寄存器开发的关系 很多人都是从学51单片机转而想进一步学习STM32,他们习惯了51单片机的寄存器开发方式,ST官方库摆在面前会不知道从何下手…

基于STM32开发板的循迹小车设计

STM32的简单应用之循迹小车 前言 智能寻迹基于自动引导机器人系统,可以实现小车自动识别路线。智能寻迹小车运用传感器、单片机、电机驱动及自动控制等技术实现,管理时自动寻迹导航。该技术已经应用于无人驾驶机动车、无人工厂、仓库、服务机器人等多种…

STM32应用开发实践教程:初识STM32

1.1.1 什么是 STM32 1.STM32 概述 STM32 微控制器是意法半导体(ST Microelectronics,ST)有限公司出品的一系列微控制 器(Micro Controller Unit,MCU)的统称。 意法半导体有限公司于 1987 年 6 月…

STM32开发指导

思考 如果我们要自己开发一个蓝牙温湿度计,硬件最小系统和外设都有什么?软件逻辑是什么? 需求分析 ● 采集类传感器使用火焰传感器、温湿度传感器、光照传感器中任意一种。 ● 黄色LED模拟智能灯,可以采集到灯状态并可远程控制;五向按键作为灯控开关(家居本地控制)。…

《嵌入式-STM32开发指南》第一部分 入门篇 -第1章 学嵌入式从STM32开始

1.1 STM32简介 ARM公司简介 ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务…

STM32的四种开发方式

STM32的四种开发方式 首先看下ST官方给出的四种开发方式的比较 寄存器开发 寄存器编程对于从51等等芯片过渡过来的小伙伴并不陌生,不管你是什么库,最终操作的还是寄存器,所以对于标准库、HAL库、LL库都是在寄存器上的编程,所以可…

使用STM32固件库开发GD32 汇总

文章目录 GD32与STM32异同1. 相同点2. 外围硬件区别3. 内部结构差别4. 功耗区别(以128k以下容量的作为参考)5. 内部FLASH 区别 使用STM32库开发时钟配置区别1. 晶振起振区别描述解决方法 2. 部分客户使用有源晶振出现问题,在 GD32F103 小容量产品,发现会…

STM32开发必备知识篇:STM32的运行机制

时间飞逝,转眼间已经硕士毕业工作第四年了,嵌入式研发成长道路上曲折坎坷,所以这也是我今年撰写博客的初心,即分享技术积累和研发经验,目前主要分为STM32和FPGA两个专辑,都包括开发必备知识篇和实战项目例程…

如何评判STM32各个MCU的性能?

很多人说STM32性能太弱,那你了解这个性能是如何得出来的吗? 1写在前面 我们经常听见某手机发布会,安兔兔跑分多少多少,其实这个跑分就是体现手机性能的一个指标。 我们使用STM32开发产品,选择MCU时,一般会综…

STM32各系列MCU性能对比及测试说明

置顶/星标公众号,不错过每一条消息! 很多人说STM32性能太弱,那你了解这个性能是如何得出来的吗? 1写在前面 我们经常听见某手机发布会,安兔兔跑分多少多少,其实这个跑分就是体现手机性能的一个指标。 我们使…

win xp虚拟机

做嵌入式,用的ADS版本太老了,在xp系统上更方便,所以昨天装了一个。 其实我是一个搬运工,主要参考了另一个人的步骤:点击打开链接 只是第一次让输序列号的时候跳过去了。 要镜像可以留邮箱,好像不能直接放在这里&…

VMware虚拟机装windows xp系统

一.准备安装所需要的软件: 1.VMware虚拟机的下载。 首先下载:VMware Workstation(虚拟机) V6.0.2 Build 59824 汉化版 2.XP的系统软件。 二.在VMware虚拟机为创建新的虚拟机 1.打开虚拟机,选择新建虚拟机: 2.下一步:…

Windows xp,Windows2003虚拟机部署(各2台)

文章目录 ISO镜像下载winxp部署a.安装winxp虚拟机b.优化虚拟机c.做快照 Windows 2003a.安装win2003b.优化c.快照 克隆虚拟机(以win2003为例) ISO镜像下载 ISO镜像下载链接 例:下载win10的操作系统 点击操作系统,选择要下载的镜像&#xff0…

VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件

VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件 Oracle VM VirtualBox 7 请访问原文链接:https://sysin.org/blog/virtualbox-7/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2022 年 10 月…

虚拟机VMware安装XP系统错误解决办法

虚拟机给我的编程工作确实带了很多方便,但是虚拟机的一个最大挑战是硬件赶不上,速度太慢了。最近一直在致力于虚拟机上Win7专业版平台上SQL Server 2005Visual Studio 2012系统开发,最初还可以,但是越到后面速度越慢。最后决定重新…

VM虚拟机安装Windows XP Professional

文章目录 安装XP下载img镜像安装激活安装VM-Tools 参考 安装XP 下载img镜像 在MSDN安装原版系统镜像-img文件,地址https://msdn.itellyou.cn/ 安装激活 新建虚拟机,选择img镜像文件,开启虚拟机,提交注册码安装即可。 安装VM-Tool…

Win10 虚拟机安装 Windows xp(professional sp3)简记(非教学)

实验系统需使用 VB6.0,任务较为复杂,win10下的vb6.0兼容问题较大。考虑win10 虚拟机安装winxp,部分重点记录如下:(资料源于网络) 虚拟机采用开源的 Oracle VM VirtualBox,(Vmware也可…

VirtualBox 免费高效开源虚拟机软件(在XP下装Linux在、Ubuntu下装Vista等)

说起虚拟机软件,相信大家都会知道VMWare和 微软的Virtual PC 了。今天异次元给大家介绍的是另外一款轻量级的虚拟机软件Virtual Box。它原本是由德国的Innotek公司开发的,后来被Sun收购了。不过呢,它从出生到现在被收购,还是一直保…