STM32 HAL库和LL库的区别

    上次开发一个项目,使用一个小容量的STM32 ARM CORTEX核心的单片机,使用STM32CUBEMX自动生成配置代码,正准备编写程序的时候,发现容量竟然有6K多。这个容量在使用大容量FLASH的单片机时不感到什么,可是使用小容量单片机的时候,就明显不够用了。

    没有办法,只好打算回去使用原来的StdLib库,前两年不就这么干的嘛,也没什么难的。可是回头找对应库的时候,发现悲剧了,没有这个序列的标准库。

    这也难不倒我们老司机!我就从HAL库里面把必须的寄存器语句摘出来,把冗余的有效检验和冲突处理去掉,不就精简下来了么,就这么干!

    打开“Drivers\STM32F0xx_HAL_Driver\Src”的目录,突然发现除了一般常用的“stm32f0xx_hal_”开头的文件,还有“stm32f0xx_ll_”开头的文件,这是什么鬼?!而且这两种文件都是一一对应的,每个模块,GPIO, RCC, CRC, DMA,... ,都有对应的文件。打开看看,跟hal的一对比,发现精简很多。

    我一下子精神了,意识到这是一个精简的库。于是上网查资料,终于查到了,这是STM32Cube LL库,看起来比较新,似乎是ST最近推出来的。


    看上表也发现它的优化性(内存和MIPS)好很多,只是产品线覆盖还没有全,但我需要的系列是有的。


    于是,果断用它,并做了一下小小的对比。


    我使用一款16k的单片机,配置的时候把UART, ADC, GPIO功能打开,分别用HAL库和LL库生成后,使用KEIL 5进行编译,做了对比。

    以下是芯片配置:


    以下是编译后的代码对比:

HAL库Program Size: Code=5376 RO-data=232 RW-data=8 ZI-data=1232  
LL库Program Size: Code=1804 RO-data=232 RW-data=4 ZI-data=1028  

    是不是相当震撼,编译后LL库只有HAL库的33%体积。

    太完美了,于是我使用LL库完成了剩余的编程工作。LL库基本是基于寄存器的操作,有的模块需要再自己再配置一下。比如Systick在使用STM32CUBEMX之后并不运行,需要Enable一下,并把IRQ打开。

     LL库的选择,在STM32CUBEMX中,点击菜单的“Project”-->“Settings”,在下面的界面中选择“Advanced Settings”,然后在每个模块后面选择使用的库。



STM32 HAL库和LL库的更多说明,见:http://www.st.com/content/ccc/resource/sales_and_marketing/presentation/product_presentation/37/55/ff/bc/a8/71/4f/c5/stm32_embedded_software_offering.pdf/files/stm32_embedded_software_offering.pdf/jcr:content/translations/en.stm32_embedded_software_offering.pdf



  • 22
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: stm32 ll是指针对stm32系列微控制器的低级外设驱动。这个为开发者提供了直接访问硬件外设的接口和函数,方便开发者进行底层硬件编程。 stm32 ll手册是stm32 ll的官方文档,详细介绍了该的各种功能和用法。手册中首先给出了的概述和特点,以及支持的stm32系列产品列表,让开发者清楚地了解的适用范围。 接下来,在手册中详细介绍了的组织结构和源文件分布,帮助开发者了解的整体结构和文件的作用。手册还提供了一些使用示例,以及对各个外设的详细说明,包括初始化、中断处理、寄存器配置等内容。 在手册中,还提供了丰富的应用注意事项和推荐实践,帮助开发者避免一些常见问题和错误用法,提高代码的可靠性和稳定性。此外,手册还提供了丰富的代码示例,以帮助开发者更好地理解的用法,并加快开发进度。 总结来说,stm32 ll手册是一本非常有用的参考文献,对于想要深入了解stm32系列微控制器以及使用ll开发者来说,是必不可少的工具。它提供了详细的说明和示例,帮助开发者轻松上手使用ll,并加快项目的开发进度。无论是初学者还是有一定经验的开发者,都可以从中获得很多帮助和指导。 ### 回答2: STM32 LL手册是指为了方便开发者使用STM32微控制器而提供的一份详细说明文档。相比于标准LL提供了更底层的抽象和更全面的控制功能,方便开发者对STM32微控制器进行更精确和高效的编程。 LL手册首先介绍了的概述和特点,以便开发者更好地理解和使用LL。接着,手册对LL的安装和使用进行了详细说明,包括的版本、环境要求和安装步骤等内容,帮助开发者快速上手。 LL手册还提供了丰富的函数和示例代码,方便开发者查找和使用指令。这些函数包括对GPIO、UART、SPI、I2C等外设的控制函数,以及时钟、中断和DMA等系统级功能的控制接口。通过查阅手册,开发者可以快速了解和调用各种函数,实现各种功能需求。 此外,手册还提供了LL的API参考,包括函数的定义、参数说明和返回值等详细信息。开发者可以根据自己的需求来选择适合的函数和参数,以满足特定的应用场景。 总之,STM32 LL手册是一份非常实用的工具,可以帮助开发者更好地使用和掌握STM32微控制器。通过学习和应用LL手册,开发者可以提高代码的可读性、可维护性和可移植性,从而加快开发进度,提高开发效率。 ### 回答3: STM32 LL是针对STMicroelectronics的STM32系列微控制器而设计的低级别外设驱动。它提供了一种底层编程接口,使开发者能够直接控制STM32芯片上的外设。相较于标准外设(StdPeriph)和高级外设HAL),LL具有更高的灵活性和效率。 STM32 LL的手册对于开发者来说是一本非常重要的参考工具。手册从的安装和基本概念入手,详细介绍了每个外设的功能和各种可配置的参数。它提供了丰富的示例代码,使开发者能够快速上手和理解的用法。 通过阅读STM32 LL手册,开发者可以深入了解每个外设的工作原理和寄存器映射。手册中还包含了外设的时序图、时钟配置和中断处理等重要信息。这使得开发者能够更好地理解外设的工作模式,并根据自己的需求进行配置和优化。 此外,手册还提供了一些常见问题的解答和调试技巧,帮助开发者解决可能遇到的问题。它还列出了LL支持的所有STM32微控制器型号和外设的兼容性信息,使开发者可以根据自己的芯片选择合适的版本。 总之,STM32 LL手册是一本宝贵的资源,它提供了全面而详细的信息,帮助开发者更好地理解和使用LL。通过合理使用LL手册,开发者可以提高开发效率和代码效果,为STM32微控制器的应用开发带来更多的可能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值