LL:Low-Layer,底层库
HAL:Hardware Abstraction Layer,硬件抽象层库
LL库和hal库对比,很精简,这实际上是一个精简的库。
LL库的配置选择如下:
在STM32CUBEMX中,点击菜单的“Project Manager”–>“Advanced Settings”,在下面的界面中选择“Advanced Settings”,然后在每个模块后面选择使用的库
1、如果使用的MCU是小容量的,那么STM32Cube LL将是最佳选择;
2、如果结合可移植性和优化,使用STM32Cube HAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和LL可以部分并发使用(对于同一个外设,HAL和LL不可能并发运行
),也可以使用混合的HAL和LL实现来获得上述相同的优势。
stm32开发时,选用不同库的开发难度和速度相差可能很大,相应的,开发出来的代码运行性能也会有很大差别。
下图是官方给出的几个常用功能:GPIO 翻转、TIM PWM 输出、ADC DMA 数据采集和 DMA M2M ,使用不同库开发出来的运行结果,可供大家参考对比,做出符合自己开发项目需要的选择。
代码效率与移植性成反比的规律是明显的。但与 Cube HAL 相比, Cube LL 的效率优势还是很明显的,几乎和直接写寄存器的效率相差无几
。而且目前 STM32cubeMX 已经开始支持直接生成使用 Cube LL 的工程,对于以后追求效率的开发应用人员来说,非常值得推荐给大家使用。