• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

为什么HAL库的操作比寄存器操作慢这么多

jeff_D 2019-03-25 浏览量:2134
寄存器的操作比HAL的操作速度要快了一倍,这是正常的吗
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • HAL库对于底层进行了封装,封装过程进行了非常严格的检查,其中用到了大量的判断和断言,这在基于寄存器和标准库的编码中很要有这么严格的检查。以F1系列的HAL库的UART驱动为例:

    0001.png

    从驱动文件中可以看到,大量的assert断言会导致执行效率显著下降。

    • 发布于 2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • HAL做了很多封装和纠错判断,是会比直接操作寄存器慢的,追求效率的时候别用HAL库封装的函数,自己实现好些。
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 2
    • 0

  • 寄存器操作省去了很多函数调用的时间,所以在操作时间上要快过HAL库操作。
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 正常,HAL抽象了硬件层(寄存器),简化了开发和设计,调用寄存器当然就多了很多步骤
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 函数的调用会压栈出栈,如果短的函数频繁调用会比较的浪费资源,HAL库移植性比较的好,这是他的特点。
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用HAL库的效率确实会降低,但是简单功能的执行速度快一倍还不至于,看看你的时钟配置是不是一样
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 正常的,库函数里面需要对参数做检测,多参数函数,需要判断参数类型,寄存器的话就是直接操作,速度最快
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • HAL库中 有很多层的调用,还有对函数,参数的检查 ,这样都是占用CPU时间的,所以要慢一些
    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

  • HAL库中进行了很多的验证,确保了程序的稳定性,不会因为参数错误而跑飞,是比稳定的。而LL库是通过配置寄存器的不小心配置错了,程序就不稳定, 会跑飞的
    • 发布于2019-03-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为HAL库为了兼容所有的STM32芯片的库,很了很多通用性的层的分离,调用时还要检查参数是不是合格的,所以,这样都是会加长时间的
    • 发布于2019-03-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

为什么HAL库的操作比寄存器操作慢这么多