Edit : Cette question est fausse. Le stm325105 n'a qu'une seule broche de réveil. Mais d'autres pièces ST ont plus d'une broche de réveil, donc la réponse donnée est valable pour celles-ci.
J'ai un stm32f105 qui a deux boutons momentanés connectés aux entrées de réveil. Le processeur est mis en MODE VEILLE. Lorsque l'un des boutons est enfoncé ou que la minuterie RTC se déclenche, l'unité centrale se réveille.
Le problème est que je veux que le processeur fasse des choses différentes selon l'entrée de réveil qui a été déclenchée. Selon 5.3.5 du manuel de référence ST stm32f105xx , aucun registre n'est conservé sauf un registre d'état indiquant que nous avons été réveillés (mais pas par qui) et 42 registres de sauvegarde.
Le mode veille permet d'atteindre la plus faible consommation d'énergie. Il est basé sur le mode de veille profonde Cortex ® -M3, avec le régulateur de tension désactivé. Le domaine 1,8 V est donc hors tension. Le PLL, l'oscillateur HSI et l'oscillateur HSE sont également désactivés. La mémoire SRAM et le contenu des registres sont perdus, à l'exception des registres du domaine de sauvegarde et des circuits de secours.
Après s'être réveillé du mode veille, l'exécution du programme redémarre de la même manière qu'après une réinitialisation (échantillonnage des broches de démarrage, réinitialisation vectorielle est récupéré, etc.). L'indicateur d'état SBF dans le registre de contrôle / état de l'alimentation (PWR_CSR) indique que le MCU était en mode veille.
Cet article du forum ST, Comment déterminer l'origine du réveil en mode veille? , suggère que je ne peux pas détecter le réveil déclenché dans le logiciel. Je n'ai trouvé aucun autre poste qui a donné plus d'éclaircissements.
Comment puis-je utiliser un logiciel ou du matériel pour déterminer, après le réveil, quelle entrée de réveil a été déclenchée?