社区导航

 

搜索
查看: 28933|回复: 42

[讨论] HAL库,真的不敢用了!

  [复制链接]

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-7-26 23:43 | 显示全部楼层 |阅读模式


         STM32F429,功能强大,还能带个LCD,很高兴。
         但是,开发F4,一不小心用HAL库,对它的函数调用的繁杂深感不妥,非常垃圾。开始曾试着去掉HAL库,特别是中断,使用寄存器直接操作。然而工作量大。

       今做一个平台,使用F429IGT,时钟设置到180MHZ,硬件上,使用TIM1控制电源,互补输出,频率200KHZ,在它的一个周期内,开了两次ADC --- 用于同步采集电压,并使用DMA传输8次数据后处理,
     打开的中断有:
               DMA中断,中断频率=200KHZ / 8 * 2,
               ADC中断,中断频率= 200KHZ *2 (两个ADC)
              TICK中断,每毫秒一次。
              TIM1中断,200KHZ

              中断函数还没有写,空的!以上这几个,就让F429在中断里处理出不来了!
      后来,把TIM1的频率降低到100KHZ时,才可以工作!

      由此,可见HAL库的效率,何等的低!一个F429,180MHZ啊,还抵不上一个TMS320F28027的速度


此帖出自stm32/stm8论坛


回复

使用道具 举报

26

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-7-27 09:13 | 显示全部楼层
关键是要熟练和变通


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-7-26 23:48 | 显示全部楼层
HAL库让一个好CPU变成垃圾级

点评

那么请用标准库,但标准库好像不支持STM32F429,所以,希望ST能继续出标准。  详情 回复 发表于 2017-7-27 07:59


回复

使用道具 举报

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-7-27 07:59 | 显示全部楼层
本帖最后由 ddllxxrr 于 2017-7-27 08:19 编辑
dontium 发表于 2017-7-26 23:48
HAL库让一个好CPU变成垃圾级

那么请用标准库,但标准库好像不支持STM32F429,所以,希望ST能继续出标准库。
http://shop34182318.taobao.com/


回复

使用道具 举报

273

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-7-27 09:05 | 显示全部楼层
本帖最后由 LeoMe 于 2017-7-27 09:07 编辑

DMA传输数据会占用总线,虽然内核还能继续做计算和逻辑,但是数据总线被DMA占着可能会影响速度,偶尔占一下影响不大,DMA数据一旦多了效果就明显了。大概HAL库本来就是方便程序猿和用系统的人的,偏硬的EE可能会嫌弃HAL的效率


回复

使用道具 举报

746

TA的帖子

2

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

荣誉会员勋章

发表于 2017-7-27 09:09 | 显示全部楼层
180MHZ只是CPU的速度,你的FLASH指令预取开了么,我猜就算开了指令预取,flash读取速度也到不了100M,所以木盆的短板可能是flash,你试试在RAM中执行程序看看
亚里士缺德


回复

使用道具 举报

1078

TA的帖子

1

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-7-27 09:31 | 显示全部楼层
HAL库就是垃圾,就是在坑用户

点评

为什么这么说呢,只是因为效率低就垃圾吗。那ST为什么要这么推广呢?  详情 回复 发表于 2017-7-27 09:48


回复

使用道具 举报

841

TA的帖子

5

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

荣誉会员勋章

发表于 2017-7-27 09:48 | 显示全部楼层
qwerghf 发表于 2017-7-27 09:31
HAL库就是垃圾,就是在坑用户

为什么这么说呢,只是因为效率低就垃圾吗。那ST为什么要这么推广呢?

点评

ST公司,是以赚钱为目的的,它是搞商业的。 就象现在的电脑,及所用操作系统,谁也不会在系统效率上下功夫,只讲功能实现, 这样硬件与软件的心知肚明的配合,双方都赚钱了。双方都“发展”了。 至于技术,  详情 回复 发表于 2017-7-27 11:17


回复

使用道具 举报

1637

TA的帖子

4

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-7-27 09:59 | 显示全部楼层
这个问题以前有人反馈过,所以现在都是用HAL+LL库一起用;HAL库还有很有好处的,配合CUBEMX 方便的很


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-7-27 11:17 | 显示全部楼层
残雪 发表于 2017-7-27 09:48
为什么这么说呢,只是因为效率低就垃圾吗。那ST为什么要这么推广呢?

ST公司,是以赚钱为目的的,它是搞商业的。

就象现在的电脑,及所用操作系统,谁也不会在系统效率上下功夫,只讲功能实现,

这样硬件与软件的心知肚明的配合,双方都赚钱了。双方都“发展”了。

至于技术,那是另一回事。它是排在赚钱之后考虑的。

点评

这种方式的软件,对于ST公司有什么好处呢  详情 回复 发表于 2017-7-27 12:07


回复

使用道具 举报

208

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-7-27 11:21 | 显示全部楼层
同感


回复

使用道具 举报

98

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-7-27 11:53 | 显示全部楼层
1.你用到了DMA,开DMA中断有错吗?
2.你用到了ADC,开ADC中断有错吗?
3.你要是不用精确延时可以把TICK关掉,如果用,TICK里面会加一个变量来计时。
4.你用到了TIM1,开TIM1中断有错吗?
如果你不用中断,可以都关闭。


回复

使用道具 举报

841

TA的帖子

5

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

荣誉会员勋章

发表于 2017-7-27 12:07 | 显示全部楼层
dontium 发表于 2017-7-27 11:17
ST公司,是以赚钱为目的的,它是搞商业的。

就象现在的电脑,及所用操作系统,谁也不会在系统效率上下 ...

这种方式的软件,对于ST公司有什么好处呢

点评

培养小白用户,这样是最容易赚钱的呀! 要是用户都是老鸟,厂家出点小毛病就会被逼着整改,要整改就要花钱请人改这可是厂家最不想见到的! 如果对比一下别的厂家的M3M4的MCU,你就会发现别家的压根子就不用什么库  详情 回复 发表于 2018-8-16 12:33


回复

使用道具 举报

1064

TA的帖子

1

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2017-7-27 15:35 | 显示全部楼层
Hardware Abstract ---- 硬件抽象是要付出代价的. 追求效率的场合应当自己写,甚至编译后再优化汇编代码.


回复

使用道具 举报

4192

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-7-27 15:49 | 显示全部楼层
我记得好像标准外设库V1.6是支持F429的吧。

HAL的库是晦涩难懂一些

点评

没有找到标准库,  详情 回复 发表于 2017-7-27 16:13


回复

使用道具 举报

1万

TA的帖子

33

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-7-27 16:13 | 显示全部楼层
huaiqiao 发表于 2017-7-27 15:49
我记得好像标准外设库V1.6是支持F429的吧。

HAL的库是晦涩难懂一些

没有找到标准库,

点评

你要不要,要的话,丢个邮箱给我,我把V1.6版本的库发给你。 我也看其他一些和正点原子有点相像的这种,像安富莱他们也用F429,也好像是V1.6吧。  详情 回复 发表于 2017-7-27 17:27


回复

使用道具 举报

617

TA的帖子

20

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-7-27 16:46 | 显示全部楼层
在HAL项目里,楼主完全可以用寄存器自己写啊.不冲突的.


回复

使用道具 举报

4192

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-7-27 17:27 | 显示全部楼层
dontium 发表于 2017-7-27 16:13
没有找到标准库,

你要不要,要的话,丢个邮箱给我,我把V1.6版本的库发给你。

我也看其他一些和正点原子有点相像的这种,像安富莱他们也用F429,也好像是V1.6吧。


回复

使用道具 举报

2351

TA的帖子

3

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2017-7-27 20:07 | 显示全部楼层
我感觉HAL库强大到爆
那些宏定义足够大部分人使用了 也就是所谓的LL
如果感觉自己写不出足够好的框架就用完整的HAL吧
目前唯一不好的是USE_RTOS无法很好支持,部分RTOS有一些兼容处理,但还得看st

本来我也就F4 Lx系列的用用HAL
现在我F1都用HAL,虽然之前有很多std库的积累,但是我还是切换到了HAL
足够方便,有了HAL真的随便跨平台,一次编写,哪个片子上都能用

点评

嗯,方便,是它的一大特点。牺牲了效率,换来了方便。  详情 回复 发表于 2017-7-28 18:41
电工


回复

使用道具 举报

124

TA的帖子

2

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-7-28 16:52 | 显示全部楼层
本帖最后由 okwh 于 2017-7-28 16:53 编辑

5us级别的频繁中断和DMA, 无论主频多少,都很难没问题。

快于10us的需求,还是自己细细调试吧。至少其中的关键部分,需要用示波器一点点的检查验证。
熙熙攘攘的世界,我们不懈前行......


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-3-21 23:38 , Processed in 0.507558 second(s), 17 queries , Gzip On, MemCache On.

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