STM32-freeRTOS-低功耗模式

感慨

做一个产品,学一门技术,最需要的就是不断抠细节,对于嵌入式,省电是一个主题,大大小小的嵌入式产品,走的是量,如果能降低功耗,也算是给环保事业做出了点微薄的心理安慰。
废话少说,主要是查资料的时候,发现大部分资料讲的是在FreeRTOSConfig.h 文件中配置configUSE_TICKLESS_IDLE,但实际操作时,不起作用。

/* USER CODE BEGIN Defines */   	      
/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */
#define configUSE_TICKLESS_IDLE 1
/* USER CODE END Defines */ 

说明

FreeRTOS.h中设置

#ifndef configUSE_TICKLESS_IDLE
// 这个设置改为1即可开启低功耗模式
	#define configUSE_TICKLESS_IDLE 1
#endif

或者直接设置工程Symbols
在这里插入图片描述
低功耗的具体实现是在port.c中,有如下代码,必须设置为1才能起作用:


#if( configUSE_TICKLESS_IDLE == 1 )

	__attribute__((weak)) void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime )
	{
		……(具体细节不贴出)
	}

#endif /* #if configUSE_TICKLESS_IDLE */

然而其并没有引用FreeRTOSConfig.h,故在FreeRTOSConfig.h中定义,并不能起到打开低功耗的效果

#include "FreeRTOS.h"
#include "task.h"

实验结果

在本人使用的板子上,跑一个打印任务,1s打印字符“ok\r\n”,从0.2A降到了0.14A,还是比较可观的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值