STM32CubeMX2对应的HAL2,和之前HAL完全不兼容!

strongerHuang 2026-03-26 17:00

 

前段时间,,同时硬件抽象层也对应的进行了升级,官方叫HAL2。
 

HAL:Hardware Abstraction Layer,翻译过来叫:硬件抽象层,是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。

STM32CubeMX2对应的HAL2,和之前HAL完全不兼容!图1
前面,我体验STM32CubeMX2并生成初始化代码时,大概看了一下生成代码的API(比如:HAL_GPIO_Init、HAL_GPIO_WritePin等,感觉和之前HAL库的API一样,当时也没细看具体源码,就觉得HAL库还是类似一样的。
 
而最近才细看了官方的描述、以及库对应的源码,发现还真有很大差异。就拿STM32同系列(C系列)C0和C5的HAL相比:
STM32CubeMX2对应的HAL2,和之前HAL完全不兼容!图2
我发现了其中区别最大的一点:新的HAL2库(STM32C5库)调用了LL库的代码

官方的描述:HAL2(V2.0.0版本),带来了许多增强功能,包括性能(运行速度)和Flash空间占用有很大改进,并与新的STM32CubeMX2兼容。
 
提高性能和减少占用空间,感觉是:HAL2整合并汲取了HAL(易于移植)和LL库(性能和空间)的优点。
 
STM32CubeMX2对应的HAL2,和之前HAL完全不兼容!图3
API接口:名称相同、参数不同
HAL2和HAL有些API的名称相同,但参数不同,比如HAL_GPIO_Init,通过对比这个API,你会发现,HAL2多了状态返回值(枚举类型的hal_status_t,同时,传入参数的方式也不一样。
 
所以,最新的HAL2和之前的HAL库是不兼容的(虽然很多API名称相同,但参数不同)。
STM32CubeMX2对应的HAL2,和之前HAL完全不兼容!图4
STM32CubeMX2对应的HAL2,和之前HAL完全不兼容!图5
通过对比(同样外设)的源码,发现基本是“一片红”,可以说千差万别。
 
甚至对比工具都不知道怎么检索了,同一个API接口都不能匹配一起了。所以,我还特意单独把某些API(比如HAL_USART_Init接口复制到另一个文件进行对比。
 
当然,源码有区别与底层硬件有关系,所以我专门找C系列(相近或同源的系列)进行对比,我重点还是把相同API进行一些简单对比。
STM32CubeMX2对应的HAL2,和之前HAL完全不兼容!图6
为此,我还专门把跨系列的HAL进行了对比,发现C0和F4有很多地方都是相同的。
所以,我综合得出的结论就是:全新的HAL2库,和之前的HAL库完全不兼容
------------ END ------------

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
more
小米财报透露三大信号:手机涨价不可避免、汽车交付冲刺55万辆、AI暂不考虑商业化
老黄太疯狂!英伟达要把AI算力送上天,连马斯克都坐不住了
企业级 AI 增长决策系统 Lanbow 宣布将千万美金广告投放经验开源
OpenAI重磅揭秘:你认为的AI幻觉,可能是模型故意出错
前阿里 90 后 P10 ,要造 AI 世代的「哈利波特」,而入口是一张 NFC 卡片
羊毛党大军,狂薅模型Token;明星AI公司,上市却现离职潮;华东大厂AI基建华南遇阻丨AI 情报局 VOL.2
Siri诞生15年迎最大升级!苹果测试独立AI应用,iOS 27或将上线
晚点独家丨火山引擎云端大模型日均调用量破百万亿 Tokens,AI 云竞争日趋激烈
英伟达AI版图再扩容:Vera CPU登场!
AI伪造“美军女神”账号被Meta封禁,四个月吸粉百万暴露虚假身份产业链
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号