| 项目在使用STM32L471RE开发,涉及到低功耗的处理。在测试过程中发现同样的硬件结构(PCB上仅焊接mcu的最小系统),使用LL库和HAL库生产的两个工程运行功耗不一样,工程配置时钟为4M 的MSI ,其他外设不配置,生成的工程直接编译下载。LL库的运行功耗为740ua、hal库为650ua |
细心啊,赞
低功耗模式涉及的细节特别多。每种条件下多一个细节功耗都有变化。 LL库很显然接近底层,驱动贴近底层简单直接。HAL库考虑了很多情况,逻辑严谨,所以代码量多,并且各个函数的逻辑也经常有一定相关性,配置也丰富。 当代码不同时,运行的时间也会不同,相应的动态功耗也不同。对于一些配置(比如IO的状态等)不同,都会明显的引起功耗变化的。所以配置的每一个细节会决定功耗的具体情况。
基于HAL库和LL库组织的代码,相同模式下芯片提现出来的功耗应该差不多,至少不会有很大差别。 你现在基于HAL库的代码运行功耗明显更低,说明它在低功耗处理方面比你基于LL库组织的代码做得更到位。 我们要知道,基于LL库组织代码的话,所有操作权都在用户手里了,HAL库不一样,库开发者在很多地方都 帮我们事先考虑周全了。基于LL库组织代码往往对使用者提出了更高的要求,对硬件操作时序、对寄存器 等要比使用HAL库了解得更多、更细。 建议你重点检查下各个不用外设的关闭及复位情况,尤其GPIO管脚的处理,保证管脚电平固定且无漏 电流产生。
是不是外部时钟也打开了。