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,還是比較可觀的。

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