RT_Thread:STM32L4系列支持低功耗休眠

在《RT_Thread:移植最小系统,使LED闪烁》的基础上,添加休眠的支持。

由于是nano的rt-thread,系统组件中没有pm组件,因此需要从官方git下载的完整rt-thread中拷贝pm组件到工程目录中,可以考虑将components文件夹下的drivers整个文件夹靠过来,里面就包含了pm、rtc等组件

RT_Thread:STM32L4系列支持低功耗休眠_第1张图片

RT_Thread:STM32L4系列支持低功耗休眠_第2张图片

然后在工程配置中分别添加RTE_USING_DEVICE和RT_USING_PM,注意,RTE_USING_DEVICE不添加的话,会造成编译提示错误

RT_Thread:STM32L4系列支持低功耗休眠_第3张图片

拷贝如下几个文件到工程下,并添加到工程中

针对L431的芯片,和实际的功耗测试需求,更新drv_pm的功耗操作。

比如下面的一些修改或者注释

RT_Thread:STM32L4系列支持低功耗休眠_第4张图片

编译通过之后可下载运行,此时LED仍旧能轮流交替闪烁,但功耗还没降下来,因为还没有在应用层添加功耗控制。

 

先在main文件添加一个定时器

RT_Thread:STM32L4系列支持低功耗休眠_第5张图片

 

 

RT_Thread:STM32L4系列支持低功耗休眠_第6张图片

RT_Thread:STM32L4系列支持低功耗休眠_第7张图片

需要特别注意:如果是nano版本的rt-thread,需要在idle进程的entry里面添加下图的代码段,以实现低功耗模式的调度,否则低功耗模式将不会生效。

RT_Thread:STM32L4系列支持低功耗休眠_第8张图片

 

上述改动完成之后,即可编译下载运行,实现低功耗了。

基于测试代码,实现了34uA(有一些外设产生了电流,mcu的实际电流比这个小很多)的最低休眠功耗,基本达到功耗要求了。

你可能感兴趣的:(RT_Thread)