71外链论坛

 找回密码
立即注册
开启左侧

LL编程方式 vs HAL编程方式:哪个更适合STM32开发?

[复制链接]
发表于 2023-5-11 16:37:46 | 显示全部楼层 |阅读模式
STM32是一款广泛使用的微控制器,它具有强大的功能和广泛的应用。在STM32的编程中,有两种主要的编程方式:HAL和LL。LL是Low Level的缩写,HAL是High Level的缩写。在STM32的编程中,使用LL编程方式相比使用HAL编程方式更加高效。颖特新将介绍STM32 LL为什么比HAL高效。

一、什么是HAL和LL?
HAL是ST公司推出的一种高级编程方式,它是一种面向对象的编程方式,可以帮助开发人员更快地编写STM32应用程序。HAL编程方式是基于库函数的,它提供了一系列的API函数,可以帮助开发人员快速地编写STM32应用程序。
LL是ST公司推出的一种低级编程方式,它是一种面向寄存器的编程方式,可以让开发人员更加精细地控制STM32的各个寄存器。LL编程方式提供了一系列的宏定义和内联函数,可以让开发人员更加方便地控制STM32的寄存器。
二、LL相对于HAL的优势
1.代码效率更高
LL编程方式相对于HAL编程方式,代码效率更高。因为LL编程方式是面向寄存器的编程方式,可以直接控制寄存器,而不需要通过API函数来控制寄存器。这样可以减少函数调用的次数,提高程序的执行效率。
2.代码体积更小
LL编程方式相对于HAL编程方式,代码体积更小。因为LL编程方式是面向寄存器的编程方式,可以直接控制寄存器,而不需要通过API函数来控制寄存器。这样可以减少库文件的体积,从而减小代码的体积。
3.代码可读性更强
LL编程方式相对于HAL编程方式,代码可读性更强。因为LL编程方式是面向寄存器的编程方式,可以直接控制寄存器,而不需要通过API函数来控制寄存器。这样可以让代码更加易于理解,提高代码的可读性。
4.代码可移植性更强
LL编程方式相对于HAL编程方式,代码可移植性更强。因为LL编程方式是面向寄存器的编程方式,可以直接控制寄存器,而不需要通过API函数来控制寄存器。这样可以让代码更加容易移植到其他平台上。
三、如何使用LL编程方式
使用LL编程方式需要了解STM32的寄存器和寄存器位的含义,以及如何使用宏定义和内联函数来控制这些寄存器和寄存器位。下面是一个使用LL编程方式的示例:
#include "stm32f4xx.h"
int main()
{
    // 使能GPIOB时钟
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
   // 配置GPIOB5为输出模式
    GPIOB->MODER |= GPIO_MODER_MODE5_0;
    while (1) {
        // 置位GPIOB5
        GPIOB->BSRR |= GPIO_BSRR_BS5;
        // 延时一段时间
        for (int i = 0; i < 1000000; i++);
        // 复位GPIOB5
        GPIOB->BSRR |= GPIO_BSRR_BR5;
       // 延时一段时间
        for (int i = 0; i < 1000000; i++);
    }
}
上述示例中,使用LL编程方式控制了GPIOB5的输出状态。首先使能GPIOB时钟,然后配置GPIOB5为输出模式。在while循环中,通过置位和复位GPIOB5的寄存器位来控制GPIOB5的输出状态,并且使用延时函数来控制输出状态的时间。
四、总结
颖特新(http://www.yingtexin.net/)介绍了STM32 LL为什么比HAL高效,LL编程方式相对于HAL编程方式,代码效率更高、代码体积更小、代码可读性更强、代码可移植性更强。使用LL编程方式需要了解STM32的寄存器和寄存器位的含义,以及如何使用宏定义和内联函数来控制这些寄存器和寄存器位。在实际的STM32开发中,可以根据实际情况选择使用LL编程方式或HAL编程方式。


回复

使用道具 举报

发表于 2023-5-11 22:53:45 | 显示全部楼层
发贴辛苦了,很感谢楼主

回复

使用道具 举报

发表于 2023-5-12 08:53:54 | 显示全部楼层
顶顶顶
数控机床 https://www.jc35.com/shop

https://www.jc35.com/ 数控机床
回复

使用道具 举报

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

本版积分规则

标签云|免责声明|手机版|小黑屋|71外链论坛 ( 皖ICP备2021018791号-5 )|Sitemap|网站地图

GMT+8, 2024-11-1 17:32 , Processed in 0.061458 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2020, Tencent Cloud.

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