Maintenant que le "STM32Duino Core" de Roger Clarke a été remplacé par "l'official STM32 Core" mis au point par STMicroelectronics, il semble approprié de rédiger cette nouvelle introduction à la programmation d'une carte STM32 au moyen de l'IDE Arduino. Une excellent nouvelle, en ce qui me concerne, c'est que le nombre de cartes supportées est beaucoup plus imposant qu'il ne l'était auparavant. En plus de la Blue Pill (STM32F103C8T6), je pourrai dorénavant programmer ma carte Nucleo F030R8 ainsi que mon STM32F030 Demo Board V1.1 en utilisant l'IDE Arduino. Dans cet article, je vais programmer chacune de ces 3 cartes grâce à l'IDE Arduino, en utilisant un programmateur ST-Link ou un convertisseur USB série. Installation des cartes STM32 au moyen du gestionnaire de cartes Tout d'abord, on choisit "Préférences" dans le menu "Fichier". Dans le bas du dialogue "Préférences", il faut ajouter l'adresse suivante à l'intérieur du champ "URL de gestionnaire de cartes supplémentaires": https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json (si ce champ contient déjà d'autres adresses, vous pouvez les séparer par des virgules). Nous accédons ensuite au gestionnaire de carte (Menu Outils - Type de carte - Gestionnaire de carte). "STM32 Cores by STMicroelectronics" devrait maintenant être disponible dans le gestionnaire de cartes. Il ne reste plus qu'à cliquer sur le bouton "Installer" et à patienter quelques minutes. Installation de STM32 Cube Programmer Si vous devez programmer votre carte avec un programmateur STLink ou un convertisseur USB/Série, il faudra aussi installer le logiciel STM32 Cube Programmer, disponible sur le site ST.com (ce n'est pas nécessaire si vous programmez une carte Nucleo). Le seul irritant, c'est que ST exige qu'on s'identifie avant de nous laisser télécharger le logiciel. J'ai dû attendre une bonne dizaine de minutes avant de recevoir l'indispensable email de validation. Pour le reste, le logiciel vient avec un installateur, c'est simple et rapide. Programmation de ma carte Nucleo F030R8 La seule carte Nucleo que je possède est un modèle bas de gamme que je programmais strictement sur mbed, puisqu'elle n'était pas supporté par le STM32 Duino core de Roger Clarke. Pour sélectionner cette carte, je commence par choisir la catégorie "Nucleo-64" (menu "Outils - Type de carte - Nucleo-64"). Je peux ensuite sélectionner la bonne carte à l'intérieur de cette catégorie (menu "Outils - Board part number -Nucleo F030R8"). Finalement, réglage de la méthode de téléversement (menu "Outils - Upload Method - Mass Storage"). Il ne reste plus qu'à brancher la carte Nucleo a un port USB, sélectionner le port, et téléverser l'exemple Blink: tout fonctionne à la perfection. Programmation de la carte STM32F103C8T6 (Blue Pill) Essayons maintenant la Blue Pill. J'ai sélectionné la catégorie "Generic STM32F1 series" dans "Outil - Type de carte". J'ai ensuite choisi "BluePillF102C8 (128k)" dans le menu "Outils - Board part number". Il faut ensuite préciser la méthode de téléchargement (menu "Outils - Upload method"). Si vous programmez votre Blue Pill avec un programmateur STLink, il faut choisir "STM32CubeProgrammer (SWD)". Si vous utilisez un convertisseur USB-Série, vous choisissez plutôt "STM32CubeProgrammer (Serial)". 4 fils sont utilisés pour brancher la carte Blue Pill à l'adaptateur USB-Série: GND de l'adaptateur USB/Série --- GND de la Blue Pill RXD de l'adaptateur USB/Série --- PA9 de la Blue Pill TXD de l'adaptateur USB/Série --- PA10 de la Blue Pill 3V3 de l'adaptateur USB/Série --- 3.3V de la Blue Pill La carte Blue Pill comporte deux jumpers. Le jumper "Boot0" (celui qui est le plus éloigné du bouton reset) doit être placé en position "1" pour que le téléversement du sketch réussisse en mode série. Toujours en téléversement série, avant de cliquer sur le bouton "Téléverser", vous devez appuyez sur le bouton "reset" de la carte Blue Pill (mon doigt est trop gros pour atteindre le bouton: je suis obligé d'utiliser un crayon). Si vous utilisez un programmateur STLink V2, vous le branchez aux 4 connecteurs situés à l'extrémité de la carte. Avec STLink, il n'est pas nécessaire d'appuyer sur le bouton reset avant le téléchargement, et la position du jumper "Boot0" n'a pas d'importance. Ici encore, le téléversement de l'exemple Blink vous permettra de confirmer que tout fonctionne correctement. Programmation de la carte STM32F030 Demo Board V1.1 Il y a quelques années, je m'étais procuré cette carte à cause de son prix ridiculement bas (de l'ordre de 1 euro!), mais je n'avais encore jamais eu l'occasion de la programmer. Pour ce modèle, je sélectionne la catégorie "Generic STM32F0 series" dans le menu "Outil - Type de carte". J'ai ensuite choisi "STM32F030F4 Demo board" dans le menu "Outils - Board part number". Il faut ensuite préciser la méthode de téléchargement (menu "Outils - Upload method". Si vous programmez la carte un programmateur STLink, il faut choisir "STM32CubeProgrammer (SWD)". Si vous utilisez un convertisseur USB-Série, vous choisissez plutôt "STM32CubeProgrammer (Serial)". À une extrémité de la carte, 4 broches permettent la programmation avec un convertisseur USB-Série, et 4 autres broches sont disponibles pour la programmation avec STLink. Le rôle de chaque connecteur est assez clairement indiqué sur la carte. Pour la programmation avec un convertisseur USB-série: Broche 3V3 de la carte STM32 - Broche 3V3 du convertisseur USB-série Broche GND de la carte STM32 - Broche GND du convertisseur USB-série Broche TXD de la carte STM32 - Broche RXD du convertisseur USB-série Broche RXD de la carte STM32 - Broche TXD du convertisseur USB-série Pour la programmation avec un dongle ST-Link: Broche 3V3 de la carte STM32 - Broche 3,3 V du ST-Link Broche DIO de la carte STM32 - Broche SWDIO du ST-Link Broche CLK de la carte STM32 - Broche SWCLK du ST-Link Broche GND de la carte STM32 - Broche GND du ST-Link Lorsqu'on programme avec le convertisseur USB-série, il faut appuyer sur le bouton "reset" avant le téléchargement. Le jumper BOOT0 doit être placé à 3,3 V lors du téléversement du programme, et à GND lors de son exécution. Bilan Pour l'instant, mes tests se sont limités à faire clignoter la LED de la carte, communiquer avec le moniteur série, etc. Reste à voir si la majorité des bibliothèques Arduino sont compatibles avec les cartes STM32 (c'est souvent là que ça coince un peu). Je devrai aussi vérifier si tous les sketches que j'ai écrits pour la Blue Pill sous l'ancien core demeurent fonctionnels, sans modifications, sur le nouveau core. Je suis assez optimiste. À lire également Vous trouverez sur cette page tous les articles concernant les cartes STM32, qu'elles soient programmées avec l'IDE Arduino ou avec mbed. Yves Pelletier (Twitter, Facebook)