[开发工具] 抢先体验STM32U5系列的STM32Cube HAL2预览版!GitHub上已开放下载,一起探索新功能吧

[复制链接]
1201|16
21小跑堂 发表于 2025-10-21 14:19 | 显示全部楼层 |阅读模式
, , , ,
#有奖活动#
亲爱的蝴蝶粉们,大家好哦!

作为论坛管理员,我又来给大家送福利啦!刚刚发现一个超赞的消息:面向STM32U5系列的STM32Cube HAL2预览版已经在GitHub上火热开放! 这可是开发者们的狂欢时刻,迫不及待想和大家分享这个重磅更新!快来一起试玩、交流,点燃我们的技术热情!
2280468f725c8c757e.png

为什么你绝对不能错过?
HAL2可不是小打小闹的升级,而是针对开发者痛点的全面优化!从性能到易用性,都有大提升,帮你更高效地搞定项目。而且,你的试用反馈将直接影响HAL2的正式版,参与其中,感觉就像在为STM32的未来添砖加瓦!

怎么快速上手?
  • 直奔GitHub仓库:STM32CubeU5-V2-Preview
  • 下载后马上开玩!官方准备了超详细的文档和示例,小白也能轻松上手!

HAL2的亮点有哪些?
这次HAL2在原有HAL基础上大升级,重点提升开发者体验:
  • 性能与存储优化:代码更精简,运行更流畅,资源利用Max!
  • 跨STM32系列移植:换产品线不用重写代码,省时省力!
  • 多RTOS支持:无缝适配各种实时操作系统,应用场景更广。
  • API超友好:调用简单,调试省心,开发效率起飞!

具体亮点举例(实用到炸!):
  • 初始化API拆分成“初始化 + 配置”两步,灵活性拉满。
  • 新增HAL驱动特性:支持独占调用LL驱动,效率更高。
  • 优化API粒度:时钟管理、IRQ处理等复杂流程,控制更精细。

更多好玩的资源等你来挖!
  • 示例代码大焕新:结构优化,README重新设计,体验感直线上升!完美适配HAL2新功能。
  • 全新在线文档平台(即将上线):导航更直观,查找资料so easy!
  • 器件系列包 (DFP):作为STM32Cube MCU软件包的一部分,开发基础更扎实。
  • 部件驱动升级:从BSP进化而来,支持LED、外部存储器等,扩展性爆棚!

快来21ic论坛分享你的试玩心得!
试用了HAL2预览版后,感觉如何?发现了什么新奇功能?还是遇到了一些小问题?快来论坛发帖,和大家一起交流! 你的反馈不仅能帮助官方完善HAL2,还能让咱们社区的技术讨论更火热!

行动指南
  • 去GitHub下载预览版,玩转HAL2!
  • 在本帖下方回帖,分享你的体验、吐槽或建议!
  • 一起讨论,碰撞出更多技术火花!✨

活动奖励
1、20元论坛打赏*5:体验细节丰富、建议具有参考性的优质内容
2、200家园币奖励:参与即得


活动时间:2025.10.22——2025.11.22

其他资源一览

有任何问题?直接在本帖子下留言,或者私戳我,咱们一起解决!快来加入这场STM32的技术狂欢吧!

liao6 发表于 2025-10-23 09:48 | 显示全部楼层
HAL2使用体验:

1.分层太多,这样会造成代码量增加,比如想调用外设初始化,需要经历hal->gpio->toggle->application->.c跳转5层文件,建议分层控制在3层好一些;
   8300468f9869514f2b.png
2.文件太多,每个底层驱动文件夹里面都有几个相同的文件,不明白什么意思,建议文档类的统一放一个目录里面;
   4178868f986d218204.png
3.代码看着更简洁了,基本只关注API接口就可以,API统一命名,调用更简单;
   9355168f988e9d241c.png
4.例程中按步骤标记如何使用,对新手友好,更容易上手了;
   6516968f988cd957b6.png
凌老师 发表于 2025-10-23 13:26 | 显示全部楼层
本帖最后由 凌老师 于 2025-10-23 13:29 编辑

整体而言,HAL2 预览版给开发者带来了更高效的开发体验。代码更加精简,运行更为流畅,能实现资源的最大化利用,在开发过程中感受到性能的提升和资源利用的高效性。
(1)将初始化 API 拆分成 “初始化 + 配置” 两步,使开发者在使用时能根据具体需求更灵活地进行设置,相比之前的方式,灵活性大幅提升。
(2)HAL 驱动,新增支持独占调用 LL 驱动的功能,当 LL 驱动已存在时,可直接调用,能有效提高驱动效率。
(3)API 粒度控制,对时钟管理、IRQ 处理等复杂流程,API 粒度进行了优化,开发者可以更精细地控制这些流程,让开发过程更加精准。
(4)多 RTOS 支持,能够无缝适配各种实时操作系统,扩大了应用场景,开发者无需为不同的 RTOS 单独开发大量适配代码。
可能遇到的问题:作为预览版软件,可能存在一些兼容性问题,或在某些特定硬件配置、特定操作场景下出现不稳定情况,也可能存在部分功能尚未完全完善,与预期效果有差异等问题。
我先访问 GitHub 仓库 STM32CubeU5-V2-Preview,找到相应的下载链接,将 HAL2 预览版下载到本地。下载完成后,参考官方提供的详细文档和示例代码。官方对示例代码进行了结构优化,README 文件也重新设计,通过阅读示例代码和相关文档,能快速了解 HAL2 的新功能和使用方法。同时,根据自身开发需求,利用 HAL2 的新特性,如按照新的初始化 API 步骤进行模块初始化和配置,尝试调用独占 LL 驱动等功能,在实际项目中体验其带来的便利。
Chasel@ 发表于 2025-10-27 09:30 | 显示全部楼层
勇敢的人先体验,希望没有bugs吧
kelly1989 发表于 2025-10-28 09:51 | 显示全部楼层
内容挺多的,代码结构还算清晰,就是内容太多了,看不过来
mixiu 发表于 2025-10-30 15:49 | 显示全部楼层
下载了,还没得及上手,看起来功能挺丰富
leihaozhuce 发表于 2025-10-30 23:44 | 显示全部楼层
       刚把 STM32CubeU5-V2-Preview 拉下来,在 Nucleo-U575ZI-Q 上实测了一波,整体体验比 HAL1 丝滑太多!以下是最打动我的三大亮点。
      1、初始化“两步走”太香了!
       以前 HAL_GPIO_Init() 一下全塞进去,现在拆成 HAL_GPIO_StructInit() + HAL_GPIO_Configure(),我可以先统一初始化结构体,再按需动态配置引脚方向/上下拉/复用,省了至少 30% 的重复代码。在做多模通信板(UART+SPI+I2C)时,切换外设复用超灵活!
       2、独占调用 LL 驱动,性能起飞
       直接在 HAL 层调用已存在的 LL 驱动,绕过 HAL 封装开销,实测 GPIO Toggle 频率从 1.8MHz 提升到 2.4MHz,接近裸机水平!对需要快速响应的工业控制场景,简直是降维打击。
       3、API 粒度精细到“变态”
       时钟管理现在支持 独立使能/禁用外设时钟域,不再是粗暴的 RCC_PeriphCLKInit 一刀切。我在低功耗项目里只开 ADC 时钟,待机电流从 180μA 降到 92μA,功耗优化直接看得见!
hblhw 发表于 2025-10-31 10:00 | 显示全部楼层
2018年用过STM32,后来因为各种原因就没有使用,等不忙的时候,下载后试试。
yinxiangxv 发表于 2025-11-1 07:22 | 显示全部楼层
最近抽空玩了一下 ST 官方放出的 STM32CubeU5-V2-Preview,也就是传说中的 HAL2 库。虽然目前还只是针对 U5 系列的预览版,但里面的变化可以说是方向性的,让我感觉 ST 终于下定决心要革新整个开发生态了。这里和大家分享一下我的几点感受。
一、最让我兴奋的新功能和变化 (新奇功能)
1. 开发流程的革命:原生支持 CMake 和 VS Code!
这绝对是最大的亮点!过去我们总是在 Keil、IAR 或者 CubeIDE 这几个“重型航母”之间选择,项目迁移和团队协作总有些不便。现在,官方示例项目直接提供了 CMakeLists.txt。
这意味着什么?
IDE 无关性:你可以用 VS Code, CLion, 或者任何支持 CMake 的编辑器来开发 STM32,彻底摆脱了 IDE 锁定。
自动化和CI/CD友好:CMake 是现代 C/C++ 项目构建的事实标准,非常利于进行自动化编译、测试和持续集成。
配置更透明:告别在图形界面里点来点去的配置方式,所有的编译选项、头文件路径、宏定义都在 CMakeLists.txt 里一目了然,便于版本控制和代码审查。
结合 ST 官方的 STM32Cube for Visual Studio Code 插件,现在在 VS Code 里的开发体验已经非常流畅,代码提示、编译、调试一条龙,再也不用像以前那样费劲地手动配置 c_cpp_properties.json 了(虽然原理相通,但官方支持总是最香的)。
2. 驱动架构的进化:用 "Part Drivers" 替代 "BSP"
这是另一个底层的重大变化。官方文档说 Part drivers replace the BSP (Board Support Package) Component drivers。
以前的 BSP 有什么问题?
BSP (板级支持包) 里的驱动,比如 LCD、传感器的驱动,通常和特定的开发板(比如 NUCLEO-U575ZI-Q)以及 HAL 库紧密耦合。如果你想把这块 LCD 用到自己的板子上,或者换一颗 STM32 芯片,代码移植会非常痛苦。
现在的 "Part Drivers" 有多香?
"Part Drivers" 被设计成独立的、与微控制器解耦的驱动。它们只关心外部器件本身(比如一颗 LIS2DW12 加速度计),而把与 MCU 的通信(比如 SPI 读写、I2C 读写)抽象成一个通用的 IO 接口。
举个例子:LIS2DW12 的驱动不再直接调用 HAL_SPI_Transmit(),而是调用一个像 platform_io_write() 这样的函数。而这个 platform_io_write() 函数需要我们自己根据具体的 MCU 和板子来实现。
这样做的好处是:这个 LIS2DW12 的驱动理论上可以在任何 STM32 芯片上复用,甚至可以移植到其他品牌的 MCU 上,我们只需要实现底层的 IO 接口就行了。这极大地提高了代码的可重用性和可移植性!
3. API 层面的人性化提升
官方提到 HAL2 的目标是提升易用性 (Usability) 和 性能 (Performance)。从示例代码(比如你上一张图里的 main.c)可以看出一些端倪:
清晰的函数职责:app_init() 负责应用初始化,app_process() 负责主循环逻辑,结构非常清晰。
统一的错误处理:通过 ExecStatus 这样的状态变量来管理程序的执行状态,使得错误处理流程更加规范。
可以预见,未来的 HAL2 API 在函数命名、参数设计、返回值等方面会更加统一和现代化,并且会更好地支持 RTOS。
yinxiangxv 发表于 2025-11-1 07:23 | 显示全部楼层
yinxiangxv 发表于 2025-11-1 07:23 | 显示全部楼层
xu@xupt 发表于 2025-11-1 15:38 | 显示全部楼层
HAL2 的核心亮点主要有性能与存储优化、跨系列移植性、广泛的 RTOS 支持和友好的 API 设计,能够实现灵活的初始化流程、新增 HAL 驱动特性和优化的 API 粒度。
xhackerustc 发表于 2025-11-1 16:48 | 显示全部楼层
下载了看了下几点感受和一个建议:
几点做得好的感受:粒度细化; 初始化API分成了两部分:实际初始化和配置; 减小代码footprint和提升性能

一个建议:HAL2的成果或一些措施能否也应用于zephyr的hal部分,让广大zephyr用户也享受HAL2的福利
hbzjt2011 发表于 2025-11-4 09:55 | 显示全部楼层
优点
1. 在示例工程上上手感觉更加流畅:初始化流程比之前清晰很多,尤其是 “初始化 + 配置” 两步走的方式,这有助于快速搭起外设架构。该版本主要在于改进 API 的可用性与性能。
2. 驱动的代码结构较以往更整洁,模块划分更明确。对我这种需要快速验证原型的场景来说,减少了不少“翻代码/查手册”的时间。
3. 代码 footprint 有感下降,尤其是在启用较少外设的简单场景,编译后镜像大小比之前 HAL1 时代稍好一些。
不足之处
  • 虽然结构更清晰,但对于非常基础或非常特殊的外设组合,示例还是偏“标准通用”场景,对我那类混搭外设(多 DMA +多中断 +RTOS+低功耗)未必完全覆盖。
  • 文档与示例虽在更新,但某些扩展功能(比如 RTOS 以外的裸机场景、或者低功耗极端模式)还未完全成熟或覆盖。作为预览版,这点可以理解,但在项目中若用到这类功能,需要额外验证。
  • 兼容性与迁移成本仍有:如果你的旧项目基于 HAL1 已经做了很多定制(例如强定制 ISR、回调、裸机模式等),迁移到 HAL2 可能需要调整一些 API、重构部分代码以贴合新结构。

总而言之,作为一次重大驱动框架更新体验,我觉得 HAL2 给人的印象是“更现代、更规范、更友好”——对于以往受限于 HAL1 驱动臃肿、外设流程不够灵活、文档与示例零散的痛点,有所缓解。如果我手上项目是新启动、以 STM32U5 系列为核心、并且想走一个较为标准化、可持续维护的路线,那么使用 HAL2 是一个值得考虑的选择。当然,如果项目已经运行多年、HAL1 驱动用得很习惯、且对外设需求非常特殊(比如极致低功耗、复杂 DMA/ISR 组合、RTOS 定制),那我建议:先在非关键路径做一个小规模迁移试验、验证外设控制流程与性能后,再全面迁移。
ldy216 发表于 2025-11-5 11:29 | 显示全部楼层
10分钟能完成项目不?请不要盗版我的架构
zjk103 发表于 2025-11-17 13:38 | 显示全部楼层
刚接触HAL2预览版,感觉内容有些多,不知道从何入手
穿西装的强子 发表于 2025-11-20 16:57 | 显示全部楼层
一、初体验:开发效率的显著提升

首次使用STM32CubeU5-V2-Preview时,最直观的感受是开发流程的简化。HAL2的API设计更贴近开发者习惯,例如将初始化流程拆分为“初始化+配置”两步,显著提升了代码的灵活性和可维护性。在移植项目时,跨系列兼容性设计让我无需重写核心代码,仅需调整少量外设配置即可适配不同型号的STM32芯片。这种“一次开发,多平台复用”的特性,尤其适合需要快速迭代的物联网项目。

二、性能优化:资源利用的极致化

在低功耗场景测试中,HAL2的存储优化表现突出。通过精简冗余代码和优化内存分配,项目代码体积减少了约15%,同时运行效率提升明显。例如,在动态电压调节(DVS)功能配合下,STM32U5的待机功耗可低至0.17μA,这对可穿戴设备等电池供电应用至关重要。此外,新增的独占调用LL驱动功能,让开发者能直接操作底层硬件,在高速数据传输等场景中进一步降低延迟。

三、多RTOS支持:生态兼容性增强

HAL2对多种实时操作系统的无缝适配是另一大亮点。在FreeRTOS和Azure RTOS环境中,中间件(如USB、文件系统)的集成过程非常顺畅。例如,配置USART通信时,只需在CubeMX中勾选对应选项,即可自动生成兼容RTOS的初始化代码。这种“开箱即用”的体验,大幅缩短了多任务系统的开发周期。

四、调试与问题:挑战与解决方案

尽管HAL2的文档和示例非常详细,但在实际调试中仍遇到两个典型问题:





中断冲突:当多个外设共用同一IRQ时,需手动调整优先级以避免死锁。建议在CubeMX中启用“冲突检测”功能,提前规避风险。



功耗异常:若外设未正确进入低功耗模式,可能导致电流激增。通过HAL2的时钟管理API精细控制时钟树,可有效解决此类问题。

五、社区反馈:共建未来

作为预览版用户,我的测试反馈已通过GitHub提交,包括建议优化API文档的导航结构。这种“开发者参与驱动改进”的模式,让人感受到ST社区的技术活力。期待正式版发布时,能进一步强化安全特性(如TrustZone支持)的易用性。

总结:STM32CubeU5-V2-Preview是面向开发者痛点的诚意之作,尤其适合追求高效、低功耗的嵌入式项目。尽管存在小瑕疵,但其前瞻性设计已为STM32生态注入新动力。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:21ic管理
简介:哎呦,这里是二姨家跑跑跑小跑堂,微信联系:xiaopaotang21ic

2301

主题

8317

帖子

293

粉丝
快速回复 在线客服 返回列表 返回顶部