天天看點

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

STM32-freeRTOS-低功耗模式感慨說明實驗結果

低功耗的具體實作是在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,還是比較可觀的。

繼續閱讀