搜索
bottom↓
回复: 68

STM32 你用HAL库还是Standard Lib

  [复制链接]

出0入0汤圆

发表于 2017-4-20 11:03:28 | 显示全部楼层 |阅读模式
一直用标准库,尚未接触HAL,想看看大伙现在都在用啥库开发

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-4-20 11:15:33 | 显示全部楼层
hal库用过,后来不用了,还是标准库资料多,好用

出0入0汤圆

发表于 2017-4-20 11:21:32 | 显示全部楼层
HAL

出0入0汤圆

发表于 2017-4-20 11:28:20 | 显示全部楼层
HAL库,方便。

出0入0汤圆

发表于 2017-4-20 12:07:13 来自手机 | 显示全部楼层
公司代码一直用std库

出0入0汤圆

发表于 2017-4-20 12:08:56 | 显示全部楼层
标准库好用

HAL的库实在是太不好用了

出0入0汤圆

发表于 2017-4-20 12:36:56 | 显示全部楼层
都不用,自己写Driver

出0入0汤圆

 楼主| 发表于 2017-4-20 12:41:54 | 显示全部楼层

笑成这样,我还是老老实实用std库

出0入0汤圆

 楼主| 发表于 2017-4-20 12:46:11 | 显示全部楼层
老徐 发表于 2017-4-20 11:15
hal库用过,后来不用了,还是标准库资料多,好用

follow you

出0入0汤圆

发表于 2017-4-20 13:52:33 | 显示全部楼层
一直用的标准库,但是好像以后新的芯片都只支持HAL了。

出0入0汤圆

 楼主| 发表于 2017-4-20 17:24:30 | 显示全部楼层
pigy0754 发表于 2017-4-20 13:52
一直用的标准库,但是好像以后新的芯片都只支持HAL了。

开发环境不变,库不变,看它会不会硬件升级不

出0入0汤圆

发表于 2017-4-20 17:56:08 | 显示全部楼层
hal库是比较慢的,要特别注意

某次,处理某个中断,然而出来的数据有抖动,经过很长时间的debug才发现是中断库响应时间过长的问题,这期间已经多次发生中断了,结果就是出来的结果有抖动
解决办法当然是不用hal的中断处理,自己写

hal比较方便比较快,自己去配置那些寄存器还得翻datasheet多慢啊,

以后可以考虑写过程序把hal配置完的寄存器倒出来,几行代码就配置完成比hal花费几毫秒快很多的

出0入0汤圆

发表于 2017-4-20 18:18:06 | 显示全部楼层
Maurice 发表于 2017-4-20 12:41
笑成这样,我还是老老实实用std库

那是字数补丁啊,

出0入0汤圆

发表于 2017-4-20 18:31:55 | 显示全部楼层
stm32cubemx

出0入0汤圆

 楼主| 发表于 2017-4-20 18:35:51 | 显示全部楼层
linghu2 发表于 2017-4-20 18:18
那是字数补丁啊,

哈哈,误会误会

出0入0汤圆

发表于 2017-4-20 18:57:15 | 显示全部楼层
STD...
不过新出来的芯片都用HAL库了。

出0入0汤圆

发表于 2017-4-20 20:24:20 来自手机 | 显示全部楼层
支持标准库,感觉HAL用的不是很习惯,那个好用用那个,都一样达到目的就行。那只是工具而已,何必在乎。

出0入0汤圆

发表于 2017-4-20 22:58:00 | 显示全部楼层
一直用的标准库

出0入8汤圆

发表于 2017-4-20 23:43:14 | 显示全部楼层
用习惯了寄存器,觉得标准库都闲麻烦。

出0入4汤圆

发表于 2017-4-21 00:50:31 | 显示全部楼层
初始化的时候用HAL 库,中断响应的程序就不会用,直接用寄存器操作。

出0入0汤圆

发表于 2017-4-21 01:37:15 | 显示全部楼层

正解

出0入4汤圆

发表于 2017-4-21 09:28:54 | 显示全部楼层
从avr直接转stm32cubemx,挺好用的!

出0入0汤圆

发表于 2017-4-23 15:37:45 | 显示全部楼层
ARM官方在推的mbed也是基于HAL的,又封装了一层C++的class和API,很方便,但是比HAL还要慢

出0入0汤圆

发表于 2017-4-23 15:56:46 来自手机 | 显示全部楼层
cube+寄存器,王道

出0入0汤圆

发表于 2017-4-23 23:15:33 | 显示全部楼层
只用HAL库和LL库,标准库可以退下历史舞台了

出0入0汤圆

发表于 2017-4-24 09:54:03 | 显示全部楼层
用HAL,其实HAL不是独立的,是在一个套件中,里面还有移植好的FREERTOS,FATFS等。
性能差的地方,可以自己改改

出0入0汤圆

 楼主| 发表于 2017-4-24 15:43:56 | 显示全部楼层
jujiaqi 发表于 2017-4-24 09:54
用HAL,其实HAL不是独立的,是在一个套件中,里面还有移植好的FREERTOS,FATFS等。
性能差的地方,可以自己 ...

说的很详细,谢谢

出0入0汤圆

发表于 2017-4-24 18:30:21 | 显示全部楼层
之前用STD,后来改用HAL了,在CUBE上IO配一下就可以直接写逻辑了,很方便。有些不太合理的地方,进函数里面稍微修改一下

出0入0汤圆

发表于 2017-4-24 21:10:34 | 显示全部楼层
无STM32基础,直接用CUBEMX配置生成初始化程序,轻松入门,几乎不需要看手册。

出0入0汤圆

发表于 2017-4-24 23:00:20 | 显示全部楼层
Earthman 发表于 2017-4-20 17:56
hal库是比较慢的,要特别注意

某次,处理某个中断,然而出来的数据有抖动,经过很长时间的debug才发现是中 ...

高性能场合用LL库,大多数不需要高性能,用HAL库就够了。

出0入0汤圆

发表于 2017-4-24 23:21:13 | 显示全部楼层
HAL库和标准库什么区别?

出100入101汤圆

发表于 2017-4-25 06:46:23 | 显示全部楼层
Earthman 发表于 2017-4-20 17:56
hal库是比较慢的,要特别注意

某次,处理某个中断,然而出来的数据有抖动,经过很长时间的debug才发现是中 ...


hal还这么多问题,谢谢分享

出100入101汤圆

发表于 2017-4-25 06:47:26 | 显示全部楼层
dzymushi 发表于 2017-4-24 18:30
之前用STD,后来改用HAL了,在CUBE上IO配一下就可以直接写逻辑了,很方便。有些不太合理的地方,进函数里面 ...

能说下哪些要修改?

出100入101汤圆

发表于 2017-4-25 06:48:52 | 显示全部楼层
nightseas 发表于 2017-4-23 15:37
ARM官方在推的mbed也是基于HAL的,又封装了一层C++的class和API,很方便,但是比HAL还要慢 ...

ARM官方在推的mbed,有用过么?

出0入0汤圆

发表于 2017-4-25 16:56:29 | 显示全部楼层
stm32cubemx
需要严格控制时间的过程,看汇编代码再优化。

出0入0汤圆

发表于 2017-4-25 21:15:40 | 显示全部楼层
用寄存器的后期维护方便吗?

出0入20汤圆

发表于 2017-4-29 11:07:33 | 显示全部楼层
新片子是HAL库,早期的STD工程不好直接移植过来,又回到了早期LPC2103,LPC2478寄存器操作--->LPC1768指针操作的烦人的事情。后来选择STM32,工程移植很简单。现在的HAL又困惑了。F7的片子必须用HAL库。

出0入0汤圆

 楼主| 发表于 2017-5-1 01:35:53 | 显示全部楼层
mon51 发表于 2017-4-29 11:07
新片子是HAL库,早期的STD工程不好直接移植过来,又回到了早期LPC2103,LPC2478寄存器操作--->LPC1768指针操 ...

哎,片子没见过升级的,库倒是更新的更快,幅度更大了

出5入8汤圆

发表于 2017-5-1 07:11:04 | 显示全部楼层
用的HAL库,STM32不同系列之间的程序移植简直太方便了。
既然官方现在主推HAL库和STM32CUBE架构,还是跟着官方走比较好。

出0入135汤圆

发表于 2017-5-1 09:11:06 来自手机 | 显示全部楼层
用hal库不错,配置方便不用看手册,但是有bug,而且空工程编译出来都有8k了

出0入0汤圆

发表于 2017-5-1 12:16:21 | 显示全部楼层
三年没用stm32了,最近搞了块412 disco,上官网想下载个库,结果找了好久没见到。
后来才从别的网站上看到,原来现在库是叫STM32CubeF4

又看了这帖子,才发现库还有这么多门道啊,我以为就改了个名字

出0入0汤圆

发表于 2017-6-6 02:28:44 | 显示全部楼层
ST的HAL库的烂得令人发指!
比如,UART库,把个全双工的UART,采用状态字节,整成了个半双工(接收时,发送状态返回忙,这是个什么鬼)。

出100入113汤圆

发表于 2017-6-6 07:36:53 | 显示全部楼层
chencc8 发表于 2017-5-1 12:16
三年没用stm32了,最近搞了块412 disco,上官网想下载个库,结果找了好久没见到。
后来才从别的网站上看到 ...

我一直自己写驱动,但最近用407,草,寄存器定义的头文件都没了,连寄存器定义都得自己搞了……
闹那样啊,官方的库,都是结构体,指针操作,位寻址多好的功能啊也不用 ,效率不说,临界保护问题,得时刻担心。楼上哪些连参考手册都不看的,要面壁去了……

出0入0汤圆

发表于 2017-6-6 09:19:02 | 显示全部楼层
最近在用STM32L011F3,代理叫我用HAL库
8K FLASH,HAL库的配置就用了6K,还搞毛啊

出0入0汤圆

 楼主| 发表于 2017-6-6 09:24:36 | 显示全部楼层
lw32 发表于 2017-6-6 09:19
最近在用STM32L011F3,代理叫我用HAL库
8K FLASH,HAL库的配置就用了6K,还搞毛啊 ...

哈哈 剩下2K代码自定义

出0入0汤圆

发表于 2017-6-6 09:34:22 | 显示全部楼层
当然是HAL库了,优势很明显,移植性好

出0入0汤圆

 楼主| 发表于 2017-6-6 09:36:27 | 显示全部楼层
zhang_mike2000 发表于 2017-6-6 09:34
当然是HAL库了,优势很明显,移植性好

我觉得即便是HAL库使用方便,但必定是过渡期,过度还是得有个过程的,两者都可以用

出100入101汤圆

发表于 2017-6-6 10:04:23 | 显示全部楼层
Earthman 发表于 2017-4-20 17:56
hal库是比较慢的,要特别注意

某次,处理某个中断,然而出来的数据有抖动,经过很长时间的debug才发现是中 ...

请教下什么中断?这种问题,DEBUG的话,就太费时间了。

出0入0汤圆

发表于 2017-6-6 10:39:08 | 显示全部楼层
HAL库会慢慢普及,Standard Lib 会慢慢退出,明白这个道理的人,就知道用那种库了。

出0入0汤圆

发表于 2017-6-6 10:48:09 | 显示全部楼层
快速开发产品,是一种手段,但产品性能,才是根本。
做个能用的东东,不难;
但做个好用的东东,就不容易。
在整个产品的生命期,写代码的时间,只占30%左右。
售后,升级,解决使用过程中的问题,所占时间有可能超过40%。
很多时候,造成返修、退货的问题,就是因为产品性能不行。
STM32的HAL库,把功能和策略都绑定在一起,想拆分很难。有时候,想要解决性能问题,不比自己重新构建一个库,所花的时间少多少。
ST公司,这是何必呢,何苦呢???

出0入0汤圆

发表于 2017-6-6 14:00:10 | 显示全部楼层
本帖最后由 Earthman 于 2017-6-6 14:14 编辑

hal慢的问题是触发ADC发现的。用ADC测量N个数据,再一个序列完成后中断中关闭ADC,然后上传。结果发现多组有抖动,表明adc中断运行时间太长未能及时关断ADC

出0入0汤圆

发表于 2017-6-6 14:07:05 | 显示全部楼层
wuzhujian 发表于 2017-6-6 10:48
快速开发产品,是一种手段,但产品性能,才是根本。
做个能用的东东,不难;
但做个好用的东东,就不容易。 ...

我也是今天上午接触到HAL,我只想说完全赞同你的说法,写法烂的令人发指。
想仿C++,却不采用C++的写法。
大部的废代码占用空间。

出0入0汤圆

发表于 2017-6-7 00:57:04 来自手机 | 显示全部楼层
HAL没有例程参考

出100入113汤圆

发表于 2017-6-7 07:27:01 | 显示全部楼层
wuzhujian 发表于 2017-6-6 10:48
快速开发产品,是一种手段,但产品性能,才是根本。
做个能用的东东,不难;
但做个好用的东东,就不容易。 ...

严重同意!

出0入0汤圆

发表于 2017-6-7 09:21:47 | 显示全部楼层
HAL和LL是趋势,新的芯片已经不提供标准库。ST估计也看到了HAL太过繁冗,估计以后会有更多的LL封装函数。然后又一片人在论坛问你们用的最多的是HAL还是LL

出425入0汤圆

发表于 2017-6-7 11:42:35 | 显示全部楼层
LL库?第一次听说。上网看看

出100入101汤圆

发表于 2017-6-7 11:49:48 | 显示全部楼层
STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)
http://blog.csdn.net/zcshoucsdn/article/details/54613202

出0入0汤圆

发表于 2017-6-7 13:01:11 来自手机 | 显示全部楼层
库太多了,不知学那个好

出0入0汤圆

发表于 2017-6-14 18:52:41 来自手机 | 显示全部楼层
17年开始使用cubeMX HAL库,一路遇到了很多问题,但也收获很多。使用cubeMX的优势很明显,快速构建工程,很多复杂的功能可以很快完成,缺点也很尖锐,遇到了问题很难短时间解决,网上用的人不是很多,但个人感觉是以后的趋势

出0入0汤圆

发表于 2017-7-25 22:39:35 | 显示全部楼层
fengyunyu 发表于 2017-4-25 06:48
ARM官方在推的mbed,有用过么?

在用来做些开源小项目,用mbed os 5,移植了一个CLI上去,顿时高大上了。
ARM官方的github:
https://github.com/ARMmbed/mbed-os

出0入0汤圆

发表于 2017-7-26 11:20:36 | 显示全部楼层
hal和std一起用
只要编译的时候注意一下就没问题的

出0入0汤圆

发表于 2017-7-31 10:27:41 | 显示全部楼层
std库已经不更新了,目前只有HAL和LL库。

出0入0汤圆

发表于 2017-7-31 12:47:53 | 显示全部楼层
我用STM32cubeMX只是测试一下板子电路的功能。
真正写程序还是用Std库,因为Std只是在寄存器上面简单的做了一个封装。而HAL库把一个简单的操作搞的太复杂了。

试过用HAL初始化SPI,操作寄存器传不了数据,翻PDF搞了整整一个通宵,后来找到是HAL库初始SPI后没有打开SPI的总开关

其他函数逻辑的BUG就不说了 。在MDK仿真有些变量值看不了,真的看不了,不知什么原因。

出0入0汤圆

发表于 2017-8-2 00:26:29 | 显示全部楼层
HAL库层层封装,确实看着恼火。风格上,跟ATMEL的BootStrap程序有点像。
LL库现阶段好像基本上只实现了一些初始化的功能,远远称不上完备。

出0入0汤圆

发表于 2017-8-2 08:58:46 | 显示全部楼层
既然都用ARM内核单片机了,一般应用功能会比较复杂吧,库函数只是底层初始化用,就像linux驱动,cubemx甚至把好些常用中间件都包含了,一般情况下简单配置下外设和中间件程序框架就都有了,不用再去一点点调试测试,写app(功能代码)不用再去折腾底层初始化和各种复杂的中间件,这么好的东东竟然还被嫌弃?

出0入0汤圆

发表于 2017-9-12 21:05:28 | 显示全部楼层
现阶段还是尽量不考虑HAL库了,原来项目使用了F103,现在打算升级到F303,用cubeMX构建了一个工程,测试SPI就有问题。
明天用LL库试试。
看了半天的HAL库,写法太繁琐了。
加上各种故障判断返回,效率真是堪忧。

出0入0汤圆

发表于 2018-2-2 10:07:13 | 显示全部楼层
hal的通用性更强,方便在不同型号的单片机之间移植,有很大的优势

出0入59汤圆

发表于 2018-2-2 14:37:05 | 显示全部楼层
yangyongwen 发表于 2017-6-6 10:39
HAL库会慢慢普及,Standard Lib 会慢慢退出,明白这个道理的人,就知道用那种库了。 ...

ST这是要让大家对它,对这种方式产生依赖性啊。不过话说回来现在的节奏是越来越快,以后用这种封装的做开发应该是趋势

出0入85汤圆

发表于 2018-2-2 16:35:42 | 显示全部楼层
F1的标准库  F4的HAL库
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 15:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表