Une instruction ARM spéciale pour l'entrée en mode basse consommation : WFI

Particularité du coeur ARM

Chaque architecture possède des instructions spécifiques qui ne sont pas supportées explicitement par le langage C.
Par exemple les processeurs ARM peuvent exécuter les instructions WFI (Wait For Interrupt) et WFE (Wait For Event) qui sont indispensables pour utiliser les modes d'économie d'énergie.
Pour insérer ces instructions on peut envisager de :

La solution supportée par ST

La bibliothèque CMSIS (Cortex Microcontroller Software Interface Standard) définit des macros qui vont mettre en oeuvre une solution automatiquement choisie en fonction du compilateur utilisé, ce qui assure la portabilité du code source.
Exemples :

Rôle effectif de WFI

Le résultat de cette instruction dépend de l'implémentation, la spec ARM prévoit seulement un bit de configuration, le bit SLEEPDEEP dans le registre SCR (System Control Register) du Cortex (voir parte 4.4.6 p. 230 du document Programming manual du STM32).

Dans le cas du STM32, Une fois l'instruction WFI exécutée, pour sortir du mode basse consommation dans lequel est entré le mcircontrôleur, il faut une interruption de niveau de priorité plus élevé que la priorité en cours, ou un reset (destructeur pour tout ce qui n'est pas alimenté par le domaine d'alimentation back-up).