扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

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

03/27 09:47
678
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

公众号 | strongerHuang

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

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

前面,我体验STM32CubeMX2并生成初始化代码时,大概看了一下生成代码的API(比如:HAL_GPIO_Init、HAL_GPIO_WritePin等),感觉和之前HAL库的API一样,当时也没细看具体源码,就觉得HAL库还是类似一样的。

而最近才细看了官方的描述、以及库对应的源码,发现还真有很大差异。就拿STM32同系列(C系列)C0和C5的HAL相比:

我发现了其中区别最大的一点:新的HAL2库(STM32C5库)调用了LL库的代码。

官方的描述:HAL2(V2.0.0版本),带来了许多增强功能,包括性能(运行速度)和Flash空间占用有很大改进,并与新的STM32CubeMX2兼容。

提高性能和减少占用空间,感觉是:HAL2整合并汲取了HAL(易于移植)和LL库(性能和空间)的优点。

API接口:名称相同、参数不同HAL2和HAL有些API的名称相同,但参数不同,比如HAL_GPIO_Init,通过对比这个API,你会发现,HAL2多了状态返回值(枚举类型的hal_status_t),同时,传入参数的方式也不一样。

所以,最新的HAL2和之前的HAL库是不兼容的(虽然很多API名称相同,但参数不同)。

通过对比(同样外设)的源码,发现基本是“一片红”,可以说千差万别。

甚至对比工具都不知道怎么检索了,同一个API接口都不能匹配一起了。所以,我还特意单独把某些API(比如HAL_USART_Init)接口复制到另一个文件进行对比。

当然,源码有区别与底层硬件有关系,所以我专门找C系列(相近或同源的系列)进行对比,我重点还是把相同API进行一些简单对比。

为此,我还专门把跨系列的HAL进行了对比,发现C0和F4有很多地方都是相同的。所以,我综合得出的结论就是:全新的HAL2库,和之前的HAL库完全不兼容。

意法半导体

意法半导体

意法半导体(ST)集团于1987年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司。意法半导体是世界最大的半导体公司之一,公司销售收入在半导体工业五大高速增长市场之间分布均衡(五大市场占2007年销售收入的百分比):通信(35%),消费(17%),计算机(16%),汽车(16%),工业(16%)。 据最新的工业统计数据,意法半导体是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列.

意法半导体(ST)集团于1987年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司。意法半导体是世界最大的半导体公司之一,公司销售收入在半导体工业五大高速增长市场之间分布均衡(五大市场占2007年销售收入的百分比):通信(35%),消费(17%),计算机(16%),汽车(16%),工业(16%)。 据最新的工业统计数据,意法半导体是全球第五大半导体厂商,在很多市场居世界领先水平。例如,意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商,世界第一大工业半导体和机顶盒芯片供应商,而且在分立器件、手机相机模块和车用集成电路领域居世界前列.收起

查看更多

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

作者黄工,从事嵌入式软件开发工作8年有余,高级嵌入式软件工程师,业余维护公众号『strongerHuang』,分享嵌入式软硬件、单片机、物联网等内容。