2.STM32开发方式全解析:寄存器、HAL库、LL库与STD库怎么选?

STM32开发方式对比:寄存器、标准库与HAL库 嵌入式系统开发中,微控制器编程方式直接影响开发效率和系统性能。寄存器级编程提供最直接的硬件控制能力,通过内存映射方式操作外设寄存器,适合对实时性要求极高的场景。标准库在寄存器基础上封装了结构体接口,平衡了开发效率与执行性能。HAL库则采用硬件抽象层设计,通过统一的API接口屏蔽底层差异,大幅提升代码可移植性。在STM32开发实践中,HAL库的句柄机制、MSP初始化和回调函数架构,为复杂嵌入式系统开发提供了标准化框架。结合DMA传输和中断处理等机制,开发者可以快速构建稳定可靠的嵌入式应用,特别适合物联网设备和 阅读详情

一、开发方式

  • 寄存器开发:

纯手搓

  • 库开发

HAL库:ST主推:兼容性很强 缺点:冗余性很高 资源受限的场景不适合用

LL库:面向寄存器的库 速度快 冗余低 使用麻烦些

STD库(标准库):STM32标准外设库(STD库)是ST官方提供的用于STM32微控制器开发的
固件库,提供对外设的封装函数,简化硬件操作。
STD库简介:
STM32标准外设库(Standard Peripheral Library)是STMicroelectronics为STM32系列MCU
提供的官方固件库,包含对GPIO、USART、ADC、定时器等外设的封装函数,方便开发者
快速调用硬件功能而无需直接操作寄存器。STD库适用于STM32F1、F2、F4等系
列,但ST已停止更新,部分型号仅支持旧版本。(兼容性差,同系列的移植都费劲)

二、HAL库使用工具

STM32CUBEMX->图形化代码生成工具

Keil MDK-ARM->IDE(集成开发环境):编辑、编译、调试

STM32CUBEIDE

简单解释一下编译:

最早:机器码 1010 可读性:没有 移植性:没有

汇编 .s 标识型语言:ADD ADDL 可读性:还可以 移植性:差

C语言(高级语言):例:2+3 = ? ->需要编译后变成机器码让机器可以识别

高级编程语言(比如 C/C++)写下的代码变成计算机能运行的程序的完整生命周期的步骤:预处理、编译、汇编、链接、执行

三、工具下载

  • MDK-ARM

https://www.keil.com

  • IAR

https://www.iar.com/zh/

  • STM32CUBEIDE

意法半导体官网 | ST官网 - STMicroelectronics

(教程优快云到处都是,主包太懒不写了)

STM32开发全流程实战:从环境搭建到产品化 嵌入式开发中,微控制器(MCU)是核心组件,而STM32凭借其Arm Cortex-M内核和丰富的外设支持,成为工程师的首选。通过硬件抽象层(HAL)和底层库(LL)的灵活运用,开发者可以高效实现外设驱动开发和通信协议栈集成。在实时操作系统(RTOS)环境下,任务调度和资源共享管理尤为关键,FreeRTOS的任务优先级划分和内存管理策略直接影响系统稳定性。低功耗设计涉及STOP模式配置和RTC校准,而固件升级方案需要考虑IAP实现和量产测试。从原型到产品还需通过EMC测试和老化测试验证可靠性,这些工程实践对 阅读详情

相关推荐

STM32 HAL库CAN总线通信实战:从协议原理到多节点工业控制应用

在嵌入式系统与工业控制领域,现场总线技术是实现设备间可靠通信的基石。其核心原理在于定义了一套标准化的电气特性与数据链路层协议,确保在复杂电磁环境下数据的确定性与实时传输。这项技术的核心价值在于构建高可靠、多主对等的分布式网络,替代传统的点对点布线,极大简化了系统架构并提升了抗干扰能力。其典型应用场景广泛覆盖汽车电子、工业自动化、新能源电池管理等关键领域。本文将聚焦于其中应用最广泛的CAN总线协议,并深入探讨如何在STM32平台上,借助HAL库高效实现包括**非破坏性位仲裁**和**错误检测与处理**在内的完

weixin_33924220的博客 312

stm32芯片包_STM32 之 HAL库、标准外设库、LL库

小米体重秤技术开发解析 _嵌入式-创客学院​www.makeru.com.cnSTM32 Embedded Software 工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库 三种。前两者都是常用的库,后面的LL库是ST最近才添加,随HAL源码包一起提供,目前支持的芯片也偏少。各库如下所示: 其中,STD库和HA...

weixin_39776344的博客 1277

STM32回调函数深度解析:从函数指针到中断上下文

在嵌入式开发中,回调函数是一种基于函数指针的解耦机制,它允许底层库在特定事件发生时调用用户注册的函数,从而将驱动层与业务逻辑分离。回调的核心原理是将函数地址作为参数传递,由调用方在合适的时机(如中断服务函数或主循环)执行,这要求开发者清晰理解回调的执行上下文。在实际工程中,回调广泛应用于串口不定长数据接收、按键事件上报、定时器软件调度等场景,能显著提升模块复用性和代码可维护性。然而,不同STM32代码库(标准库、HAL库、LL库)对回调的实现差异巨大,且回调若运行在中断上下文,需遵循最小操作原则,避免死等、

weixin_29159127的博客 244

常用标准库_STM32 之 HAL库、标准外设库、LL库

小米体重秤技术开发解析 _嵌入式-创客学院​www.makeru.com.cnSTM32 Embedded Software 工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库 三种。前两者都是常用的库,后面的LL库是ST最近才添加,随HAL源码包一起提供,目前支持的芯片也偏少。各库如下所示: 其中,STD库和HA...

weixin_34254848的博客 759

STM32嵌入式C++调试实战:GDB深度解析与VSCode配置

嵌入式C++开发中,STM32平台上的调试能力是连接高级语言语义与底层硬件行为的关键桥梁。其核心原理在于GDB通过SWD/JTAG协议与ARM Cortex-M内核的Debug Access Port交互,结合DWARF调试信息实现源码级定位;技术价值体现在突破IDE图形界面局限,直击内存对齐、静态初始化顺序、异常ABI约束等裸机特有问题;典型应用场景包括HardFault根因分析、中断上下文变量观测、DMA+中断协同调试及std::chrono时间精度验证;而VSCode作为前端,需精准配置launch.

weixin_34294649的博客 422

Linux下STM32开发环境搭建:从GCC、OpenOCD到VSCode全流程指南

嵌入式开发中,交叉编译工具链是将高级语言代码转换为目标芯片可执行指令的核心。其工作原理是通过编译器、汇编器和链接器,将源代码编译链接为特定架构的二进制文件。这套工具链的价值在于实现了开发环境与目标硬件的解耦,极大提升了开发效率和代码可移植性。在嵌入式Linux、RTOS及单片机开发等场景中,GNU Arm Embedded Toolchain是广泛应用的开源解决方案。本文聚焦于STM32平台,详细介绍了如何在Linux环境下,整合GNU工具链、OpenOCD调试器与Make构建系统,并利用VSCode打造高

cumo7370的博客 438

STM32

摘要:该博客为STM32系列博客的开篇,该系列博客主要介绍STM32单片机各类外设的框架、原理、功能、使用方法及注意事项等,同时会在每篇博客的最后附上相应驱动Demo的github地址。因为意法半导体公司每年都会推出新的STM32系列单片机,所以该系列博客也会不断更新。另外,涉及Cortex-M内核的内容属于ARM架构的范畴,在这里不会过多描述。

lxtqyh的博客 532

嵌入式C++实战:基于STM32的LED类封装与底层机制解析

嵌入式开发中,C++语言的应用日益广泛,其强类型与封装特性为硬件资源管理提供了更安全的编程范式。通过构建Led类来控制GPIO引脚,将硬件细节与业务逻辑解耦,是嵌入式面向对象设计的典型实践。理解extern "C"如何解决C与C++符号链接问题,以及volatile关键字对寄存器访问的优化抑制,是保障底层正确性的关键。在STM32等MCU平台上,裸机环境的资源限制要求工程师合理使用栈对象、关闭异常与RTTI,并谨慎对待堆内存分配。本文以LED闪烁和串口调试输出为切入点,从C++类设计、编译烧录到问题排查,完

weixin_34232744的博客 380

4.STM32 驱动 74HC138 译码器点亮 LED:寄存器配置与程序优化实战

所以我们可以使用一些办法简化代码的同时提高程序的可读性;138-A、138-B、138-C对应PA0 PA1 PA4。上述直接对寄存器操作的方法比较晦涩;2.结合真值表来辅助判断LED亮灭。1.分析原理图(3输入8输出)3.通过寄存器配置来点亮LED。

Dodger_code的博客 169

STM32驱动OV2710:1080p DVP摄像头寄存器配置与DMA采集实战

在嵌入式视觉领域,摄像头传感器的驱动是连接硬件与图像应用的关键一环。STM32作为主流MCU,其并行接口DVP常被用于采集高分辨率图像数据,而OV2710作为一颗原生1080p的CMOS传感器,相比常见的OV2640拥有更高的像素时钟和更复杂的寄存器体系。要稳定驱动它,需理解DVP时序、SCCB控制协议、YUV422输出格式以及DMA双缓冲机制。本文从传感器初始化、PLL配置、裁剪窗口到DMA采集,系统梳理了用STM32驱动高清DVP摄像头的核心原理与常见调试方法,帮助开发者快速定位花屏、掉帧等问题,适用于

weixin_34280237的博客 210

KDD 2025 | 人大团队提出多任务贝叶斯联邦学习算法,同时处理分类和回归

©PaperWeekly 原创 ·作者 |吕俊良单位 |中国人民大学统计学院本文介绍了中国人民大学统计学院的一篇关于多任务贝叶斯联邦学习的文章“Task Diversity in Bayesian Federated Learning: Simultaneous Processing of Classification and Regression”,本文被 KDD 2025 接收,代码已经...

Paper weekly 2746

STM32基础知识

STM32基础知识

wei_Embedded_z的博客 799

从Arduino IDE到Atmel Studio:ATmega328P开发的进阶之路

本文探讨了从Arduino IDE转向Atmel Studio进行ATmega328P开发的进阶路径。通过对比两者差异,详细介绍了Atmel Studio的环境配置、寄存器操作思维、烧录方法及高级调试功能,帮助开发者突破Arduino的封装限制,实现对单片机底层硬件的精细控制与性能优化,提升嵌入式开发的专业能力。

weixin_29193259的博客 126

STM32嵌入式开发底层原理与工程实践全解析

从时钟树、总线矩阵到中断与定时器,嵌入式开发的核心是理解芯片内部的数据流与控制流。以STM32为典型代表,Cortex-M内核通过NVIC管理优先级,定时器实现PWM、输入捕获与编码器测速,串口与CAN等总线则构成设备通信的骨架。掌握这些通用机制,开发者不仅能解决点灯、串口乱码、延时卡死等常见问题,更能为FreeRTOS移植、电机控制、低功耗设计等复杂场景奠定基础。本文基于实际工程经验,梳理STM32从裸机到RTOS的学习主线,并总结Flash下载失败、CAN掉线等高频故障的排查思路,帮助读者建立从芯片手册

weixin_34387468的博客 386

abaqus热力耦合模拟教程学习笔记

学习资源:BV1je4y1a7Ku软件:abaqus2016以m为单位制。

qq_41900477的博客 2万+

阿里云Windows服务器部署网站全流程:从IIS配置到安全上线

Web服务器是承载网站应用、处理HTTP请求的核心软件。其工作原理是监听特定网络端口,接收客户端请求,并返回相应的网页、文件或动态生成的内容。在Windows Server环境中,IIS(Internet Information Services)作为微软官方Web服务器,凭借其与操作系统深度集成、图形化管理界面和对ASP.NET等微软技术栈的良好支持,成为许多开发者和运维人员的首选。其技术价值在于提供了稳定、可扩展的托管平台,支持从简单的静态网站到复杂的企业级Web应用。在云服务器普及的今天,将IIS部署

weixin_33552698的博客 327

Arduino_Core_STM32 之 SubGhz 库:面向 STM32WL 内置 SX126x 射频模块的底层 SPI 控制指南

SubGhz 库是 Arduino_Core_STM32 仓库中专门面向 STM32WL 系列微控制器的一款底层通信库。STM32WL 将一颗 Semtech SX126x 射频收发芯片(SX1261 与 SX1262 的组合形态)直接集成进 MCU 裸片内部,并通过一条专用的内部 SPI 总线与内核相连。SubGhz 库以 Arduino 风格 API 暴露该模块的 NSS、Reset、Busy

gitblog_00361的博客 431

机器学习ROC曲线中的阈值thresholds

在ROC曲线上的不同点对应于不同的阈值。根据任务的具体要求,可以选择合适的阈值,以达到平衡召回率和误报率,或者根据具体应用场景调整模型的工作点。,表示样本属于正例的概率。这个概率值可以被截断为二元分类的决策,通过选择一个阈值来决定样本是被分类为正例还是负例。通过改变阈值,可以得到不同的真正例率(TPR)和假正例率(FPR),从而绘制出ROC曲线。总体来说,ROC曲线提供了模型在不同阈值下的性能综合情况,帮助分析模型的分类能力。通常来说,随着阈值的增加,TPR会减小,而FPR会增加。ROC曲线的绘制涉及。

行子的博客 3657

STM32嵌入式C++可调试架构实战:GDB深度调试与轻量日志

嵌入式C++不是简单移植面向对象语法,而是构建具备可观测性、可调试性与可验证性的系统级架构。其核心在于突破裸机环境下C++ ABI约束(如全局对象构造顺序、异常机制失效、STL内存不可控),通过分层设计(纯C硬件抽象层+无虚函数服务层+状态机应用层)实现确定性行为;结合GDB命令行精准调试(-g3/-Og编译、DWT时间戳、硬件断点)、轻量日志框架(环形缓冲+模块枚举+分级宏开关)及模板化HAL适配器,达成资源可控(128KB Flash仅增3.2KB ROM)、调试可信(寄存器级单步/变量观测)、移植灵活

weixin_33991418的博客 483

[技术解析] SGDC驱动的轻量级IoT入侵检测:特征选择与模型优化的实战指南

本文深入解析了如何利用SGDC驱动的轻量级入侵检测系统保护IoT设备安全。通过实战指南,详细阐述了SGDC模型在资源受限环境下的优势,并结合特征选择技术优化模型性能,实现高效、低耗的异常流量检测,为物联网安全部署提供了一套可行的解决方案。

weixin_29192211的博客 351

[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记

最近开始学习网络安全相关知识,接触了好多新术语,感觉自己要学习的东西太多,真是学无止境,也发现了好几个默默无闻写着博客、做着开源的大神。接下来系统分享一些网络安全的自学笔记,希望读者们喜欢。 上一篇文章分享了看雪Web安全总结知识和一个异或解密的示例,本篇文章着重讲解Chrome浏览器保留密码功能渗透解析及登录加密入门笔记,结合实际例子一步步实现浏览器漏洞的挖掘。非常基础的文章,希望对入门的博友们有帮助,大神请飘过,谢谢各位看官!

杨秀璋的专栏 2万+

STM32本质解析:从芯片架构到工程落地

STM32是基于ARM Cortex-M内核的32位微控制器(MCU)家族,其核心价值在于确定性实时能力与可伸缩的硬件架构。它通过多层总线矩阵、精细化存储器映射和可配置外设时钟树,实现CPU、DMA与外设的并行高效协同;技术优势体现在高精度ADC采样、低抖动定时器捕获、SPI/USART可靠通信等底层能力上,广泛应用于智能硬件、工业控制和物联网边缘网关。理解STM32的关键不在开发板形态,而在于掌握芯片级资源调度逻辑——这正是解决‘stm32 adc切换通道’‘stm32超声波测距不准’等高频问题的根本路径

weixin_34183910的博客 551

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-差分信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的差分拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 440

CLion+CMake+CubeMX构建STM32工程化开发环境

嵌入式开发中,基于CMake的现代构建系统正逐步替代传统IDE封闭式工程管理。CMake通过文本化、可版本控制的配置实现跨平台、可复现的编译流程,支撑持续集成与团队协作;其与STM32CubeMX协同可自动生成HAL/LL驱动框架,并解耦硬件抽象与业务逻辑。结合CLion等智能IDE,可提供精准符号导航、静态分析与GDB调试支持,显著提升固件可维护性。在PID控制、卡尔曼滤波等实时算法模块封装中,CMake驱动的分层架构便于单元测试与模块替换,是构建高可靠性工业嵌入式系统的关键基础设施。

github5actions的博客 1069

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32裸机C++工程实战:从编译到GDB调试全链路

嵌入式C++并非简单将.cpp替换.c即可运行,其核心在于理解C++运行时在资源受限环境下的底层约束。在STM32等MCU上,需主动剥离异常处理、RTTI和动态内存依赖,通过编译选项(-fno-exceptions/-fno-rtti)、链接脚本定制(.init_array段)、new/delete重载及GDB深度调试等手段构建可验证、可量产的C++落地路径。技术价值体现在模块化封装能力提升、驱动复用性增强与调试可观测性改善;典型应用场景包括HAL库外设类封装、传感器管理器抽象、RTOS任务对象建模等。本文

weixin_34248487的博客 402

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 1.从电平到RISC-V:单片机与嵌入式处理器入门指南
下一篇: 3.STM32寄存器点灯实战:从命名规则到GPIO配置全解析
硅基造物主
博客等级 码龄4年 17粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值