Exercices du chapitre "Microcontrôleur et periphériques"
Inverser l’état d’une LED
Exercice 1
Écrivez un programme
en C++ qui inverse l’état d’une LED connectée à la broche PE_0 lorsqu’un
bouton connecté sur la broche PA_0 est appuyé. Notez que la LED est
allumée lorsqu’on écrit un 0 dans la broche et éteinte lorsqu’on écrit un
1. On aimerait qu’elle soit éteinte au démarrage. Notez aussi que le
bouton a besoin d’une résistance de pull-down pour fonctionner. Faites
attention à ne pas utiliser de “Magic numbers” dans votre code et définissez vos
constantes avec des static constexpr.
Parité UART
Exercice 2
À quoi sert la “parité” dans les paramètres de communication avec un UART ?
Périphériques I2C
Exercice 3
Cherchez sur Internet d’autres périphériques qui utilisent l’I2C
Débit sur un bus SPI
Exercice 4
Avec un SPI rapide (50MHz), combien de temps faut-il pour lire complètement une carte SD de 16GiB ?
Inversion d’une LED basée sur un état
Exercice Exercices du chapitre “Microcontrôleur et periphériques”/5
Implémentez la classe MyDevice pour que la LED soit inversée à chaque deuxième pression du bouton.
Suffixe C++ pour les unités de temps
Exercice 6
Quel(s) mécanismes(s) de C++ permet(tent) de simplement ajouter un suffixe ms à une durée pour un temps en millisecondes ?
Utilisation des unités de temps
Soit le code :
| timer_measure_kernel.cpp | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
La ligne 5 interroge le temps actuel du noyau (en millisecondes et sur 64 bits), la ligne 6 attend 100 millisecondes, puis la ligne 7 lit le nouveau temps actuel du noyau. Le temps écoulé est la différence entre les deux temps.
Exercice 7
Quel est le défaut de cette solution ?
Clignotement asymétrique d’une LED
Exercice 8
Soit le code
| timer_blink.cpp | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Consommation d’énergie et autonomie
Exercice Exercices du chapitre “Microcontrôleur et periphériques”/9
Nous souhaitons alimenter une station météo construite avec un microcontrôleur STM32F412 avec deux piles en série de type AA de \(1.5\,V\) et \(2800\,mAh\) chacune. En mode de veille, le microcontrôleur (avec une tension de \(3V\)) consomme \(12\,\mu{}A\). Pour faire la mesure et l’envoyer, le microcontrôleur à besoin de \(3\) secondes pendant lesquelles il consomme \(112\,\mu{}A\) par \(Mhz\) et il tourne à \(100\,Mhz\). Pendant ces 3 secondes, il faut aussi activer le module LoRa qui consomme \(100\,mA\) pendant \(100\, mS\). En travail, le circuit est aussi alimenté en \(3V\).
Avec quelle période pouvons nous faire des mesures pour que le système puisse fonctionner pendant \(5\) ans avec les mêmes piles ?