Kinetis SDK v.1.3 API Reference Manual
Rev. 0
Freescale Semiconductor, Inc.
|
Low Power Manager provides API to handle the device power modes. It also supports run-time switching between multiple power modes. Each power mode is described by configuration structures with multiple power-related options. Low Power Manager provides a notification mechanism for registered callbacks and API for static and dynamic callback registration.
The Power Manager driver is developed on top of the SMC HAL, PMC HAL, and RCM HAL.
~~~~~{.c}
#include "fsl_power_manager.h" /* Definition of power manager callback power_manager_error_code_t callback0(power_manager_callback_type_t type, power_manager_user_config_t * configPtr, power_manager_callback_data_t * dataPtr) { power_manager_error_code_t ret = kPowerManagerError; ... ... ... return ret; } ... ... ... ... ... /* Main function int main(void) { /* Callback configuration user_callback_data_t callbackData0; power_manager_static_callback_user_config_t callbackCfg0 = { callback0, kPowerManagerCallbackBeforeAfter, (power_manager_callback_data_t*) &callbackData0 }; power_manager_static_callback_user_config_t * callbacks[] = { &callbackCfg0 }; /* Power modes configurations power_manager_user_config_t vlprConfig; power_manager_user_config_t stopConfig; power_manager_user_config_t *powerConfigs[] = {&vlprConfig, &stopConfig}; /* Definition of transition to and out these power modes vlprConfig.mode = kPowerManagerVlpr; vlprConfig.policy = kPowerManagerPolicyAgreement; vlprConfig.sleepOnExitValue = false; vlprConfig.sleepOnExitOption = false; stopConfig = vlprConfig; stopConfig.mode = kPowerManagerStop; /* Calling of init method POWER_SYS_Init(&powerConfigs, 2U, &callbacks, 1U); }
~~~~~{.c}
~~~~~{.c}
#include "fsl_power_manager.h" /* Index into array containing configuration of very low power run mode - vlpr #define MODE_VLPR 0U /* Initialization power_manager_user_config_t vlprConfig; ... ... ... power_manager_user_config_t *powerConfigs[1] = {&vlprConfig}; /* Switch to required power mode power_manager_error_code_t ret = POWER_SYS_SetMode(MODE_VLPR); if (ret != kPowerManagerSuccess) { printf("POWER_SYS_SetMode(powerMode5) returns : %u\n\r",ret); }
~~~~~{.c}