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,还是比较可观的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章