历史上的今天
返回首页

历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | 为什么ST要推hal库?hal库和标准库的区别?

2023-03-14 来源:zhihu

一句话:企业只需要拿捏企业,不需要拿捏工程师!

最终给ST产生利润的是客户(企业),不是工程师,他才不会在乎工程师需要牺牲多少发量。

那怎么拿捏企业?

这个要从一个产品的研发成本说起。

ST推出HAL库最终目的就是缩短产品开发周期,降低企业的研发成本

产品研发周期就是产品从无到有的时间,时间越短,研发成本就越低。

因为工程师一个月至少也要1-2W工资吧,不过这个还不是最关键的,最关键的是研发周期决定你是否能占领市场的先机,是否能先跑马圈地。

作为一个从事了单片机开发10几年老工程师,我觉得STM32早期的固件库已经吊打同行了。

现在出了一个比固件库使用起来更简单的HAL库,这就很过分,心疼同行5秒。

如果你觉得HAL难用,大概率是第一次接触STM32这种开发模式,适应了以后你会发现比51单片机用起来更简单。

这种开发模式基本上是大势所趋,如果一个单片机芯片厂或代理商不提供外设例程,那请问你到底有什么核心竞争力,能说服企业去用你的单片机?

很多就是压低价格,降低品质,最后批量出货各种问题,双方遍地鸡毛。

下面聊下HAL库有哪些优势,为什么能缩短研发周期

推出HAL库的主要原因是为了简化STM32的开发过程。

在没有HAL库的情况下,开发人员需要直接与硬件交互,这需要深入了解芯片的寄存器、时钟和中断等底层细节。

这种开发方式需要较高的技术水平和花费更长的时间。

而有了HAL库,开发人员可以使用抽象层接口,将底层硬件控制从上层应用中隔离出来,使得开发人员更专注于应用程序本身的开发,简单来说就是做一个调库侠

同时,HAL库还提供了一些常用的驱动程序和功能库,比如I2C、SPI、USART等,这些都可以大大减少开发时间和代码量。

一、HAL库的优点

1.简化开发流程

开发人员不需要深入了解底层硬件细节,只需要调用HAL库提供的API函数即可实现底层硬件控制。

2.提高代码复用性

由于HAL库提供了标准化的接口,可以方便地在不同的STM32系列芯片之间共享代码。

3.增强可移植性

由于HAL库是与设备无关的,开发人员可以将代码移植到不同的芯片平台上,而不需要重新编写底层硬件控制代码。

提供常用驱动程序和功能库:HAL库提供了一些常用的驱动程序和功能库,比如I2C、SPI、USART等,这些都可以大大减少开发时间和代码量。

二、HAL库的缺点

1.增加代码复杂度

由于HAL库是一个大型的库,需要包含大量的代码,因此在使用时需要将库文件加入到工程中,这会增加代码的复杂度。

2.系统资源占用

由于HAL库是一个底层库,会占用一定的系统资源,因此在对系统资源要求较高的应用场景中,可能需要使用更为轻量级的库。

三、总结

虽然HAL库非常方便,但我还是喜欢用标准库,主要是用习惯了。

资源占用、代码复杂度、代码执行效率、开发周期等维度综合评估的话,还是标准库最合适。


推荐阅读

史海拾趣

高通(GENITOP)公司的发展小趣事

进入90年代,超霸电池开始拓展内地市场,先后在北京、上海、广州等十多个主要城市设立销售点。与此同时,公司业务也逐步向多元化发展,除了电池生产外,还涉足电缆、汽车配线、扬声器等领域。这一时期,超霸电池推出了可循环再用的镍氢充电电池和充电器,满足了市场对环保、高效电池产品的需求,进一步巩固了其在电池行业的领先地位。

Display Elektronik GmbH公司的发展小趣事

随着环保意识的日益增强,Display Elektronik GmbH将绿色环保理念融入到了公司的发展中。公司采用环保材料和生产工艺,减少了对环境的污染。同时,Display Elektronik GmbH还积极推广绿色显示技术,为客户提供更加环保、节能的显示解决方案。这种对环保的关注和投入,让Display Elektronik GmbH在行业中树立了良好的形象。

Gang Song Electronics Co Ltd公司的发展小趣事

在加入Telit后,GainSpan的技术和产品迅速在全球范围内得到推广和应用。Telit凭借其强大的市场网络和品牌影响力,将GainSpan的低功耗WiFi模组带到了更多的国家和地区。特别是在北美、欧洲和亚洲等物联网市场发展迅速的地区,GainSpan的技术和产品更是成为了众多企业和项目的首选。通过全球化布局,Telit进一步巩固了其在物联网市场的领先地位。

Bomar公司的发展小趣事

在环保意识日益增强的今天,Bomar公司积极响应全球环保号召,开始研发并应用环保材料。公司推出的生物基低聚物产品,完全或部分提取自植物或农作物等可再生原料,不仅降低了对石油产品的依赖,还具有低刺激性和低毒性的优势。这一创新举措不仅有助于提升Bomar公司产品的环保性能,也符合了市场对环保产品的需求趋势,为公司的可持续发展注入了新的动力。

这五个故事只是Bomar公司在电子行业发展过程中的一部分,但它们却展示了公司在技术创新、市场拓展、合作发展以及环保责任等方面的努力和成就。通过这些故事,我们可以看到Bomar公司如何紧跟时代步伐,不断适应和引领电子行业的发展趋势。

DB Unlimited公司的发展小趣事

DB Unlimited始终将技术创新作为公司发展的核心驱动力。公司不断投入大量资源进行技术研发和创新,推出了多项具有行业领先水平的音频技术。这些技术的推出不仅提升了公司的竞争力,也推动了整个音频行业的发展。DB Unlimited的技术创新能力和成果得到了业界的广泛认可。

Applied Engineering Products (AEP)公司的发展小趣事

在环保意识日益增强的今天,AEP公司积极响应国家号召,致力于绿色环保和可持续发展。公司投入大量资金研发环保型电子元器件,减少生产过程中的废弃物排放。同时,公司还建立了完善的废旧产品回收机制,对废旧产品进行环保处理,实现资源的循环利用。这一举措不仅提升了AEP公司的社会形象,也为公司的可持续发展注入了新的动力。

问答坊 | AI 解惑

电子电路知识点总结

1、 纯净的单晶半导体又称本征半导体,其内部载流子自由电子空穴的数量相等的。 2、 射极输出器属共集电极放大电路,由于其电压放大位数约等于1,且输出电压与输入电压同相位,故又称为电压跟随器(射极跟随器)。 3、 理想差动放大器其共模电压 ...…

查看全部问答>

关于Protell99使用

很多朋友是做工程师,特别像画板这类,基本上软件显示的都是英文,而事实上没有多少工程师是英文通,但是他们一样能运用自如,像Protell他是可以汉化的,汉文是直观的,但是没有几个人会这样去做,原因只是汉译后的不全面?…

查看全部问答>

基于FPGA的uClinux系统移植及实现web-server[1]

基于FPGA的uClinux系统移植及实现web-server[1] 最近一直在做niosII上的操作系统,最终实现web-server. 将整个过程与大家分享一下. 主要有以下几个部分, 1>.NIOS2 IDE下实现 uClinux 的嵌入,以及相关软,硬件设计 (红色飓风RC2-1C6, Microtroni ...…

查看全部问答>

WinCE如何动态加载本地驱动

[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\SNMP]    \"Dll\"=\"snmp.dll\"    \"Order\"=dword:3    \"Keep\"=dword:1    \"Entry\"=\"SnmpInitialize\" 比如这个驱动,如何动态加载?…

查看全部问答>

遇到ucos2的一个关于任务莫名其妙被挂起的问题 忘大侠提醒点拨一下

51的CPU  Ucos2的操作系统    问题描述如下:  在TASK10(优先级为15)中我用于大量的数据解析和处理  涉及到大量的数据读出和存储               & ...…

查看全部问答>

请教关于DA的参数问题

那位大侠知道DA芯片datasheet中经常提到的setting up time和多少sample/update rate MSPS是什么意思还有fclk(美信的给的好像是这个参数)美信的fclk和其他公司的sample/update rate是一个意思么?他们之间有关系么?比如如果我想做一个系统数据产 ...…

查看全部问答>

LM3S8962 I2C 总线部分学习分享

内部I2C总线模块介绍: 内部集成电路 (I2C) 总线通过采用两线设计(串行数据线SDA和串行时钟线SCL)来提供双向的数据传输,并连接到串行存储器(RAM和ROM)、网络设备、LCD、音频发生器等外部 I2C设备上。 I2C总线也可在产品的开发和生产过程中用于 ...…

查看全部问答>

我画的英飞凌xc878 xc886封装

前段时间做CAN-BUS实验板时画的两个片子的封装…

查看全部问答>

IAR编译选项设置的疑问?

使用STM32,IAR环境下 其中一个片段代码如下:if((analog(5) - analog(6))>10 && (analog(7) - analog(6))>10)// -----1{printf("m2");}else if((analog(5) - analog(7))>&n ...…

查看全部问答>

关于stm32,这样用可以吧...

  测量六相电压,timer2中定时10ms, 作为需要延时处的基准.另外输出比较500us,在输出比较中断中,软件触发ADC, 扫描转换六通道电压,DMA自动读取.最后算有效值.   stm32定时器文档不好理解,输出比较时,可以设置成不影响相关的输出 ...…

查看全部问答>