发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表
打印
[技术讨论]

STM32三种库函数的分析和比较

[复制链接]
637|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

STM32库函数可以分为标准库函数、HAL库函数、LL库函数。你问我为什么不说寄存器开发,以为太过于底层,非一般高手驾驭不了,我只是个小菜**,所以对于寄存器开发不敢妄自议论。
1、标准库函数
标准库函数是C语言的标准库函数,包括stdio.h、stdlib.h、string.h等。标准库函数具有可移植性,适用于所有的C语言编译器,并且具有较好的兼容性。但是,标准库函数的执行效率较低,适用于一些不要求高性能的应用场景。
优点:
(1)具有可移植性:标准库函数适用于所有的C语言编译器,可以在不同的开发环境中使用。
(2)具有较好的兼容性:标准库函数在不同的平台上具有较好的兼容性,可以方便地移植和调试。
(3)易于学习和使用:标准库函数的调用方式和C语言的函数调用方式相似,容易学习和使用。
缺点:
(1)执行效率较低:标准库函数的执行效率较低,适用于一些不要求高性能的应用场景。
(2)功能较为简单:标准库函数提供的功能较为简单,不能满足一些高级别的需求。
(3)不支持硬件抽象层:标准库函数不能直接操作硬件,需要通过底层驱动实现硬件抽象层。
2、LL库函数
LL库函数是由ST公司提供的底层库函数,与HAL库函数相比,LL库函数更加接近硬件,提供了更高的执行效率。LL库函数的调用方式与寄存器的设置方式类似,适用于对硬件直接控制的应用场景,如设备驱动程序等。但是,LL库函数的使用较为复杂,需要对硬件的控制方式有一定的了解。
优点:
(1)执行效率高:LL库函数与硬件的交互更加直接,执行效率更高,适用于对性能要求较高的应用场景。
(2)更接近硬件:LL库函数更接近硬件,提供了更高的灵活性和可定制性,适用于一些需要对硬件直接控制的应用场景,如设备驱动程序等。
(3)支持硬件抽象层:LL库函数提供了硬件抽象层,可以直接操作硬件,而不需要底层驱动。
缺点:
(1)使用复杂:LL库函数的使用比较复杂,需要对硬件的控制方式有一定的了解,不适合初学者。
(2)不具备移植性:LL库函数的可移植性较差,不同型号的STM32芯片可能会有不同的LL库函数版本,需要根据芯片型号进行选择。
(3)不支持高级别的功能:LL库函数不支持高级别的功能,如中断处理、DMA传输等,需要通过其他方式实现。
3、HAL库函数
HAL库函数是由ST公司提供的硬件抽象层库函数,相比于LL库函数,HAL库函数更加易于使用,提供了一系列高级别的API函数。HAL库函数的使用方式类似于调用标准库函数,适用于对硬件控制要求较高,但是对性能要求不高的应用场景。HAL库函数也提供了一些高级别的功能,如中断处理、DMA传输等。
总之,STM32的标准库函数、LL库函数和HAL库函数各有特点,具体使用应根据实际应用场景进行选择。在性能要求较高的应用场景中,可以使用LL库函数或者直接操作寄存器;在对控制要求不高,但是需要快速开发的应用场景中,可以使用HAL库函数;在需要可移植性的应用场景中,可以使用标准库函数。
优点:
(1)易于学习和使用:HAL库函数的调用方式类似于调用标准库函数,易于学习和使用。
(2)支持硬件抽象层:HAL库函数提供了硬件抽象层,可以直接操作硬件,而不需要底层驱动。
(3)提供了高级别的API函数:HAL库函数提供了一系列高级别的API函数,包括中断处理、DMA传输等功能,方便用户快速开发。
(4)具有可移植性:HAL库函数的可移植性较好,可以在不同的开发环境中使用。
缺点:
(1)执行效率较低:HAL库函数的执行效率较低,适用于对性能要求不高的应用场景。
(2)功能较为简单:HAL库函数的功能较为简单,不能满足一些高级别的需求。
(3)占用空间较大:HAL库函数占用的空间较大,适用于资源充足的应用场景。


使用特权

评论回复

打赏榜单

21ic小管家 打赏了 30.00 元 2023-04-17

相关帖子

发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

227

主题

578

帖子

6

粉丝