STM32HAL库和LL库对比

目的:

        主要是为了记录LL库和HAL库之间的优缺点,以及我使用时遇到的问题。


LL库

        LL库全称叫Low Layer 库,和标准库差不多,是偏底层的一种库,因此用起来和标准库差不了太多。可以用STM32CUBEMX生成外设初始化代码。
        优点是因为本身偏底层,所以运行效率很高,寄存器操作也较为直观。
        缺点就是一个功能一般需要多个函数来实现,而且有些外设,如USB是没有LL库的,这是一大痛点。


HAL库

        我对HAL库相当不满,缺点如下。
        一是HAL库封装相当抽象,明明一层封装就足以解决问题,HAL库偏偏封装了好几层,各种函数调用来调用去,效率极其低下。二是HAL库的函数实现过于复杂,比如一个函数就需要操作一个寄存器即可,它非要把参数检查来检查去,把所有参数检查完毕之后再去进行操作,操作十分繁琐,但是可靠性提升却非常有限。
        当然HAL库也有优点,在代码本身不复杂,程序运行效率不需要太高的场合,利用HAL库能快速开发程序。


关于HAL库可靠性不高这个问题:

        我最近在调试一个SPI借口的SPI程序。总所周知操作屏幕一般只需要用对应的协议向屏幕驱动芯片写数据就行了。后续屏幕所有的操作,如初始化,显示字符这些功能,都是在向屏幕写数据这一个操作的基础上封装而成的。
        首先是LL库,我初始化SPI后,使能SPI,以50MB的速度操作这个SPI屏幕显示一幅图片。结果就是屏幕显示非常稳定,没有任何差错。无论我怎样动这个屏幕,怎样碰连接线,其它程序部分怎么变动,屏幕显示没有任何问题。
        再此是HAL库,初始化SPI后使能SPI,仍然以50MB的速度操作这个SPI屏幕显示同一幅图片,显示几秒之后图片就会失真。具体伪代码如下:

	LCD_Show_Image;
	HAL_Delay(N ms);

大约在150ms以上就开始失真延时N个毫秒,N过大时,大约在150ms以上真,屏幕失真。N设为100,碰连接线和屏幕,屏幕失真。连续几次复位,屏幕失真。具体原因位置,估计和HAL库的SPI发送逻辑有很大的关系。调试也不好调试,因为HAL库太过冗杂。

关于STM32库的选择问题:

        由于我刚需用STM32的USB HS,而USB只有HAL库,因此我才尝试用HAL库。但发现问题之后,我尝试LL库实现其它外设,HAL库实现USB HS,也就是说HAL库和LL库混用,目前测试来开没有任何问题。因此我认为目前的最优解是,在STM32CUBEMX初始化代码时,有LL库的尽量使用LL库,没有LL库的时候选用HAL库,HAL库效果不理想时有必要直接操作寄存器。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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微控制器的应用开发带来更多的可能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值