PM Examples

Table of Contents

API-PM-CASE1:IDLE TIMER WAKEUP

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() blc_pm_select_internal_32k_crystal() choose internal 32K RC as the clock source of 32K timer [Mandatory]
cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() none user initialization
main_loop() cpu_stall_wakeup_by_timer0() cpu_stall_wakeup_by_timer0(100*CLOCK_SYS_CLOCK_1MS) let MCU enter idle mode and wait for being waked up by Timer0
sleep_ms() sleep_ms(3000) delay 3000ms after MCU waking up

API-PM-CASE2:SUSPEND PAD WAKEUP

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() blc_pm_select_internal_32k_crystal() choose internal 32K RC as the clock source of 32K timer [Mandatory]
cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() cpu_set_gpio_wakeup() cpu_set_gpio_wakeup(GPIO_PB0, LEVEL_HIGH, 1) set the specified pin as GPIO wakeup source
gpio_setup_up_down_resistor() gpio_setup_up_down_resistor(GPIO_PB0, PM_PIN_PULLDOWN_100K) enable 100k pull-down resistor of the specified pin
main_loop() cpu_sleep_wakeup() cpu_sleep_wakeup(SUSPEND_MODE, PM_WAKEUP_PAD, 0) let MCU enter suspend mode and wait for being waked up by PB0
sleep_ms() sleep_ms(3000) delay 3000ms after MCU waking up

API-PM-CASE3:SUSPEND 32K WAKEUP

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() blc_pm_select_internal_32k_crystal() choose internal 32K RC as the clock source of 32K timer [Mandatory]
cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() none user initialization
main_loop() cpu_sleep_wakeup() cpu_sleep_wakeup(SUSPEND_MODE, PM_WAKEUP_TIMER,
clock_time() + 100*CLOCK_SYS_TIMER_CLK_1MS)
let MCU enter suspend mode and wait for being waked up by 32k Timer
sleep_ms() sleep_ms(3000) delay 3000ms after MCU waking up

API-PM-CASE4:DEEP PAD WAKEUP

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() blc_pm_select_internal_32k_crystal() choose internal 32K RC as the clock source of 32K timer [Mandatory]
cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() cpu_set_gpio_wakeup() cpu_set_gpio_wakeup(GPIO_PB0, LEVEL_HIGH, 1) set the specified pin as GPIO wakeup source
gpio_setup_up_down_resistor() gpio_setup_up_down_resistor(GPIO_PB0, PM_PIN_PULLDOWN_100K) enable 100k pull-down resistor of the specified pin
cpu_sleep_wakeup() cpu_sleep_wakeup(DEEPSLEEP_MODE , PM_WAKEUP_PAD, 0) let MCU enter deepsleep mode and wait for being waked up by PB0
main_loop() none Main program loop

API-PM-CASE5:DEEP 32K WAKEUP

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() blc_pm_select_internal_32k_crystal() choose internal 32K RC as the clock source of 32K timer [Mandatory]
cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() cpu_sleep_wakeup() cpu_sleep_wakeup(DEEPSLEEP_MODE, PM_WAKEUP_TIMER,
clock_time() + 100*CLOCK_SYS_TIMER_CLK_1MS)
let MCU enter deepsleep mode and wait for being waked up by 32k Timer
main_loop() none Main program loop

API-PM-CASE6:DEEP PAD WAKEUP WITH RETENTION

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() blc_pm_select_internal_32k_crystal() choose internal 32K RC as the clock source of 32K timer [Mandatory]
cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() cpu_set_gpio_wakeup() cpu_set_gpio_wakeup(GPIO_PB0, LEVEL_HIGH, 1) set the specified pin as GPIO wakeup source
gpio_setup_up_down_resistor() gpio_setup_up_down_resistor(GPIO_PB0, PM_PIN_PULLDOWN_100K) enable 100k pull-down resistor of the specified pin
cpu_sleep_wakeup() cpu_sleep_wakeup(DEEPSLEEP_MODE_RET_SRAM_LOW32K , PM_WAKEUP_PAD, 0) let MCU enter deepsleep with retention mode and wait for being waked up by PB0
main_loop() none Main program loop

API-PM-CASE7:DEEP TIMER WAKEUP WITH RETENTION

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() blc_pm_select_internal_32k_crystal() choose internal 32K RC as the clock source of 32K timer [Mandatory]
cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() cpu_sleep_wakeup() cpu_sleep_wakeup(DEEPSLEEP_MODE_RET_SRAM_LOW32K, PM_WAKEUP_TIMER,
clock_time() + 100*CLOCK_SYS_TIMER_CLK_1MS)
let MCU enter deepsleep with retention mode and wait for being waked up by 32k Timer
main_loop() none Main program loop

History Record

Date Description Author
2019-1-10 initial release LJW