|
此前用F4系列MCu,我自己写了一套寄存器级驱动,完成带中断的 GPIO、SPI。 目前切换到 H7 平台,用CubeMX+HAL库做了几个项目。为了深入了解芯片的硬件,用了一个月手搓 一套GPIO 驱动。H7 外设远比 F4 复杂, SPI 驱动目前还没搞定。 如果坚持全部手搓驱动,我还需要实现:时钟树、USART、DMA、ADC、定时器,未来还可能对接 TFT 显示屏。 如果全部手写驱动,要先吃透每一个外设的完整工作机制,会消耗大量时间,导致没有足够时间开展核心业务。 直接使用 HAL 库可以快速完成工程搭建,但会缺少底层学习。担心 HAL 做了过多抽象,最后只会调用 API,缺少寄存器层面的功底。 方案 A:全部自研驱动,获得芯片深度理解、潜在更好性能,但存在项目时间耗尽的风险; 方案 B:直接使用 HAL,快速把整套系统跑通,但牺牲底层细节学习。 请教高手给个建议,如何取舍? |
关于最近学习C语言回调和钩子函数的想法,以及对HAL库回调函数的困惑
STM32 上同时跑 LWIP 的 TCP 与 UDP 连接
使用 HAL 库通过串口以 ASCII 形式发送整型数据
USB Host 外部中断按键失效
调用HAL_FLASH_OB_Unlock()直接进入 HardFaultHandler
STM32 增加 WiFi + 以太网的低成本方案
NUCLEO G474RE无法运行程序
STM32F407VGT6 开发板Beak at address "0x0" with no debug information our outside
BootLoader 与 DFU 模式的区别
调度器原子变量相关问题
微信公众号
手机版
全部自研驱动?要回归洪荒时代吗?以当下的32位ARM内核MCU而言,不但耗费大量时间和精力,而且代码质量也很难保证
全自研驱动? 个人是电源驱动方向 8位 32位 ESP32 甚至移动端都写过
那就看你处于的情况,但是项目一般不会等你全部弄懂,最多是干中学,干中学也很少自研驱动,直接学为了实现某个功能如何使用某个库
单纯想要学习满足好奇心的话,那可以学学看,但是一个月搓了一套驱动,这个是否合适,要自行评估
但是怀疑的点是,软件工程师为什么要熟悉到硬件的程度,更多的不是应该熟悉外设的使用么,HAL说白了人家已经把错误的路走过了所留下的,想要研究直接研究HAL不就好了
8位我倒是寄存器级别的全手搓,但是等到全部熟悉以后,厂商有更合适的demo,照样是直接用demo节省时间,知道怎么用不再去研究了👀️
这个要看目的吧,学习的目的 可以手搓,做产品的目的 还是怎么有效怎么来吧
看你想做的方向,如果是快速项目的话,直接上手HAL,如果是只是想学习底层,那你就深入了解下寄存器,全部自研驱动其实没必要
先用现成的库,不合适的库慢慢修改自己的库,积累多了就成自己合适的了
那你直接用寄存器操作好了,不用绕弯子,最接近底层,MCU执行也非常快。但是开发周期会很慢。
用HAL库不用操作寄存器,层层封装,好理解,开发快。