你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

自己写驱动深入学习与调用Hal库的取舍

[复制链接]
patch1582 提问时间:2026-8-17 21:36 / 未解决

此前用F4系列MCu,我自己写了一套寄存器级驱动,完成带中断的 GPIO、SPI。

目前切换到 H7 平台,用CubeMX+HAL库做了几个项目。为了深入了解芯片的硬件,用了一个月手搓 一套GPIO 驱动。H7 外设远比 F4 复杂, SPI 驱动目前还没搞定。

如果坚持全部手搓驱动,我还需要实现:时钟树、USART、DMA、ADC、定时器,未来还可能对接 TFT 显示屏。 如果全部手写驱动,要先吃透每一个外设的完整工作机制,会消耗大量时间,导致没有足够时间开展核心业务。

直接使用 HAL 库可以快速完成工程搭建,但会缺少底层学习。担心 HAL 做了过多抽象,最后只会调用 API,缺少寄存器层面的功底。

方案 A:全部自研驱动,获得芯片深度理解、潜在更好性能,但存在项目时间耗尽的风险; 方案 B:直接使用 HAL,快速把整套系统跑通,但牺牲底层细节学习。

请教高手给个建议,如何取舍?

收藏 评论6 发布时间:2026-8-17 21:36

举报

6个回答
zhoupxa 回答时间:昨天 22:02

全部自研驱动?要回归洪荒时代吗?以当下的32位ARM内核MCU而言,不但耗费大量时间和精力,而且代码质量也很难保证

HyunYong 回答时间:11 小时前

全自研驱动? 个人是电源驱动方向 8位 32位 ESP32 甚至移动端都写过

那就看你处于的情况,但是项目一般不会等你全部弄懂,最多是干中学,干中学也很少自研驱动,直接学为了实现某个功能如何使用某个库

单纯想要学习满足好奇心的话,那可以学学看,但是一个月搓了一套驱动,这个是否合适,要自行评估

但是怀疑的点是,软件工程师为什么要熟悉到硬件的程度,更多的不是应该熟悉外设的使用么,HAL说白了人家已经把错误的路走过了所留下的,想要研究直接研究HAL不就好了

8位我倒是寄存器级别的全手搓,但是等到全部熟悉以后,厂商有更合适的demo,照样是直接用demo节省时间,知道怎么用不再去研究了👀️

fafa1 回答时间:10 小时前

这个要看目的吧,学习的目的 可以手搓,做产品的目的 还是怎么有效怎么来吧

wlp向日葵 回答时间:9 小时前

看你想做的方向,如果是快速项目的话,直接上手HAL,如果是只是想学习底层,那你就深入了解下寄存器,全部自研驱动其实没必要

STMWoodData 回答时间:8 小时前

先用现成的库,不合适的库慢慢修改自己的库,积累多了就成自己合适的了

Bowen1028 回答时间:7 小时前

那你直接用寄存器操作好了,不用绕弯子,最接近底层,MCU执行也非常快。但是开发周期会很慢。

用HAL库不用操作寄存器,层层封装,好理解,开发快。

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版