LL库(Low-Level Library)是STMicroelectronics在HAL库的基础上提供的更低级别的库。LL库提供了对底层寄存器和外设的更直接的访问,并提供了一组低级别的API函数。LL库保留了更多的硬件细节,为开发人员提供了更高级别的灵活性和控制。使用LL库,开发人员可以直接编写更底层的代码,实现对微控制器和外设的精细控制。LL库...
HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。目前,HAL库已经支持STM32全线产品。 2、LL库 LL库(Low Layer)是ST最近新增的库,与HAL捆绑发布,文档也是和HAL文档在一起的,比如:在STM32F3x的HAL库说明文档中,ST新增了LL库这一章节,但是在F2x的HAL文档中就没有。 LL库更接近...
使用LL库,开发人员可以直接编写更底层的代码,实现对微控制器和外设的精细控制。LL库适用于对性能和资源要求极高,以及对底层硬件控制有特殊需求的应用。 三者的关系 在这三种库中,出现的先后顺序是标准库—HAL库—LL库,所以大家如果在网上 看到LL库编写的程序,大概是不久完成的,看到标准库,可能就是稍早一些时候的...
ST公司针对STM32系列微控制器提供了两种软件开发套件:HAL和LL。HAL全称是Hardware Abstraction Layer,硬件抽象层;LL全称是Low Level库,低层库。相对于HAL,LL更加接近底层,具有更高的效率,主要有以下几个方面原因。 首先,LL是一套纯C语言库,而HAL是一套C库+底层驱动。纯C语言库的优势在于减少了多余的层级,避免了...
在使用STM32CubeMX或者STM32CubeIDE开发应用程序时,用户可以根据自己的喜好选择使用HAL高级库或者LL底层库驱动,但是在用法上,两者有很大的不同。 LL底层库 LL驱动函数,实际上就是以内联函数的方式访问寄存器,在优化等级高的时候,编译器会直接嵌入宏代码,因此与我们自己直接对寄存器读写的效率是一样的。
ST提供的标准库、HAL库和LL库各有其优势和特点,如果是移植很久前的项目,大概率要使用标准库。如果新开发项目,使用STM32CubeMX就必须使用HAL库和LL库了。个人建议,现在最好是使用HAL库+LL库进行开发,因为这是官方主推的库,并且CubeMX确实是个很好用的工具,而里面只有HAL库和LL库。HAL库开发迅速,LL库开发稳定,...
说实话,HAL相对标准外设库来说确实存在代码效率不高、代码量大灯这些问题,那么与之对应的STM32Cube LL恰好避免了这样的问题。 LL能高效的原因 简单总结一下原因:巧妙运用C语言静态、内联函数直接操作寄存器。 当然,这是其中重要的原因,还有一些其它原因,这里暂不描述。
Layer)和LL(Low-Level)都是常用的开发库,用于访问STM32的硬件资源和外设。相比于HAL,LL在一些方面...
对于LL而言,使用HAL库,会多一个句柄,比如UART1: UART_HandleTypeDef huart1; 如果LL库的工程,直接调用HAL接口是不行的,缺少句柄。 中断请求处理 HAL和LL的中断请求IRQ方式其实是不一样的,混用之后很容易出错。 这里简单举例说这些,深入理解底层的朋友应该知道,还有许多地方也是不建议混用。
今天就给大家讲一讲STM32Cbue LL库中巧妙运用“静态内联”使代码更高效。 1概 述 有些应用要求MCU能高效处理,特别是跑一些算法时,对CPU执行效率要求较高。 网上有很多文章说STM32CubeHAL执行效率不高,代码量大等问题,导致很多还没有入门,或初学的读者就产生各种各样的疑惑。