Aller au contenu

Timer

Le STM32F412 offre beaucoup de timers et comme vu au cours “Architecture des Ordinateurs”, ces timers nous permettent de faire des pauses dans un programme ou d’effectuer des tâches à intervalle régulier. Nous avons utilisé ce mécanisme pour faire un polling de boutons ou de la roue codeuse.

STM32Cube

Pour utiliser les timers avec STM32Cube, consultez le chapitre 68 (HAL TIM Generic Driver / page 984) du manuel UM1725 : “Description of STM32F4 HAL and low-layer drivers”.

L’importance des unités en informatique

En 1999, la NASA a perdu le “Mars Climate Orbiter” à cause d’une confusion d’unités. La sonde a voyagé pendant 7 mois pour disparaître avant même d’entrer en orbite autour de Mars.

Mars Climate Orbiter

Mars Climate Orbiter (source : Wikipedia)

La sonde a soit été détruite dans l’atmosphère martienne, soit elle est sortie de sa trajectoire et est entré dans une orbite autour du Soleil. La cause de cet échec – qui coûta 125 millions de dollars à la NASA – était que les ingénieurs de Lockheed (le fabricant des moteurs de freinage de la sonde) utilisaient des unités anglo-saxonnes alors que les ingénieurs de NASA utilisaient des unités métriques.

Dans les programmes que vous écrivez, faites en sorte que les unités soient clairement indiquées et que l’utilisateur ne puisse pas faire d’erreur à ce niveau.

Avec FreeRTOS, nous avons plusieurs moyens de gérer le temps.

Millisecondes en tick

Pour convertir des millisecondes en tick avec FreeRTOS, vous pouvez diviser le temps en millisecondes par portTICK_PERIOD_MS ou alors utiliser la macro pdMS_TO_TICKS()

Notez que FreeRTOS considère en général le temps avec une résolution de 1ms et que si vous avez besoin de plus haute précision (par exemple pour du polling de bouton), vous utiliserez avantageusement les timers matériel avec des routines d’interruptions (comme nous l’avons fait dans le cours “Architecture des Ordinateurs”).