Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
stm32:peripherals:pwr_sleep [2016/10/13 11:10] – created feurstm32:peripherals:pwr_sleep [2019/09/16 07:19] (current) – [Programming Example] kjaz
Line 1: Line 1:
 ====== SLEEP Mode ====== ====== SLEEP Mode ======
 +
 +In SLEEP mode only the cpu clock is disabled, everything else stays as previously configured. \\ \\
 +
 +=== Enter SLEEP mode ===
 +
 +  * WFI (wait for interrupt) instuction enters SLEEP mode.
 +\\
 +
 +=== Exit SLEEP mode ===
 +
 +  * Clear the EXTI (and, if not EXTI, the corresponding NVIC) pending bit.
 +\\
 +
 +
 +===== Programming Example =====
 +
 +The code snippet bellow shows how to enter (and exit) SLEEP mode.
 +
 +<code c>
 +#include "reg_stm32f4xx.h"
 +
 +RCC->AHB1ENR |= (0x1 <<  0u);       /* Enable GPIOA clock */
 +RCC->APB2ENR |= (0x1 << 14u);       /* Enable SYSCFG clock */
 +
 +/* Configure wake up pin (PA.0). */
 +GPIOA->MODER &= ~(0x3 << 0u);         /* Clear existing mode bits 10 and 11. */
 +
 +GPIOA->PUPDR &= ~(0x3 << 0u);         /* Clear existing pull-up/-down bits 0 and 1. */
 +GPIOA->PUPDR |= (0x1 << 0u);          /* Set pin 0 to pull-up mode. */
 +
 +/* Configure interrupt. */
 +SYSCFG->EXTICR1 |= (0u << 0u);      /* Set EXTI0 to GPIOA. */
 +EXTI->RTSR |= (0x1 << 0u);            /* Trigger on rising edge. */
 +EXTI->IMR |= (0x1 << 0u);             /* Unmask interrupt line. */
 +NVIC->ISER0 |= (0x1 << 6u);         /* Enable EXTI0 interrupt. */
 +
 +/* Disable SLEEPDEEP (STOP or STANDBY mode). */
 +SCB->SCR &= ~(0x1 << 2u);
 +
 +
 +/* -------------------- Enter SLEEP mode -------------------- */
 +
 +__asm volatile ("wfi");
 +
 +
 +/* -------------------- Exit SLEEP mode --------------------- */
 +
 +/* Since all registers and the SRAM are untouched by the SLEEP mode,
 + * the program continues after the WFI instruction.
 + * No further steps required. 
 + */
 +
 +</code>
 +\\
  • stm32/peripherals/pwr_sleep.1476357017.txt.gz
  • Last modified: 2016/10/13 11:10
  • by feur