SiFli SF32LB52 SoC interfaces.
More...
SiFli SF32LB52 SoC interfaces.
The idle thread enters the deepest sleep level that no driver has blocked. A driver whose peripheral would not survive a level blocks it while active:
prv_pwm_start();
prv_pwm_wait_done();
prv_pwm_stop();
void soc_sf32lb_sleep_release(SocSf32lbSleepLevel level)
Release a block taken with soc_sf32lb_sleep_block().
void soc_sf32lb_sleep_block(SocSf32lbSleepLevel level)
Block a sleep level and every deeper one.
@ SOC_SF32LB_DEEPSLEEP
Deep sleep.
Definition sleep.h:33
◆ SocSf32lbSleepLevel
Sleep levels, ordered from shallowest to deepest.
| Enumerator |
|---|
| SOC_SF32LB_ACTIVE | No sleep at all.
|
| SOC_SF32LB_WFI | Light WFI.
|
| SOC_SF32LB_DEEPWFI | Deep WFI.
|
| SOC_SF32LB_DEEPSLEEP | Deep sleep.
|
◆ soc_sf32lb_sleep_block()
Block a sleep level and every deeper one.
For example, blocking SOC_SF32LB_DEEPWFI forbids deep WFI and deep sleep, leaving plain WFI as the deepest permitted level. Refcounted; balance each call with soc_sf32lb_sleep_release(). Safe to call concurrently, including from ISRs.
- Parameters
-
◆ soc_sf32lb_sleep_max_level()
Get the deepest sleep level currently permitted.
- Returns
- One step shallower than the shallowest outstanding block, or SOC_SF32LB_DEEPSLEEP with no blocks.
◆ soc_sf32lb_sleep_release()