PM0215
2.5.1
Entering sleep mode
This section describes the mechanisms software can use to put the processor into sleep
mode.
The system can generate spurious wakeup events, for example a debug operation wakes up
the processor. Therefore software must be able to put the processor back into sleep mode
after such an event. A program might have an idle loop to put the processor back to sleep
mode.
Wait for interrupt
The wait for interrupt instruction, WFI, causes immediate entry to sleep mode (unless the
wake-up condition is true, see
processor executes a WFI instruction it stops executing instructions and enters sleep mode.
See
WFI on page 68
Wait for event
The wait for event instruction, WFE, causes entry to sleep mode depending on the value of
a one-bit event register. When the processor executes a WFE instruction, it checks the value
of the event register:
●
0: the processor stops executing instructions and enters sleep mode
●
1: the processor clears the register to 0 and continues executing instructions without
entering sleep mode.
See
WFE on page 67
If the event register is 1, this indicates that the processor must not enter sleep mode on
execution of a WFE instruction. Typically, this is because an external event signal is
asserted, or a processor in the system has executed an SEV instruction, see
page
66. Software cannot access this register directly.
Sleep-on-exit
If the SLEEPONEXIT bit of the SCR is set to 1, when the processor completes the execution
of an exception handler it returns to Thread mode and immediately enters sleep mode. Use
this mechanism in applications that only require the processor to run when an exception
occurs.
2.5.2
Wakeup from sleep mode
The conditions for the processor to wakeup depend on the mechanism that cause it to enter
sleep mode.
Wakeup from WFI or sleep-on-exit
Normally, the processor wakes up only when it detects an exception with sufficient priority to
cause exception entry.
Some embedded systems might have to execute system restore tasks after the processor
wakes up, and before it executes an interrupt handler. To achieve this set the PRIMASK bit
to 1. If an interrupt arrives that is enabled and has a higher priority than current exception
priority, the processor wakes up but does not execute the interrupt handler until the
processor sets PRIMASK to zero. For more information about PRIMASK see
mask registers on page
Wakeup from WFI or sleep-on-exit on page
for more information.
for more information.
15.
Doc ID 022979 Rev 1
The STM32 Cortex-M0 processor
29). When the
SEV on
Exception
29/91
Need help?
Do you have a question about the STM32F0 Series and is the answer not in the manual?