- ST-LINK V2
- STM32CubeMX
- Matériaux nécessaires
- Schéma de circuit et connexions
- Création et gravure d'un programme dans STM32 à l'aide de Keil uVision et ST-Link
- Sortie de la carte STM32 programmée par Keil
- Programme
Les microcontrôleurs STM32 qui utilisent l' architecture ARM Cortex M sont de plus en plus populaires et sont utilisés dans de nombreuses applications en raison de leurs fonctionnalités, de leur coût et de leurs performances. Nous avons programmé STM32F103C8 à l'aide de l'IDE Arduino dans nos tutoriels précédents. La programmation de STM32 avec Arduino IDE est simple, car il existe de nombreuses bibliothèques disponibles pour différents capteurs pour effectuer n'importe quelle tâche, nous devons simplement ajouter ces bibliothèques dans le programme. Il s'agit d'une procédure simple et vous risquez de ne pas vous lancer dans un apprentissage approfondi des processeurs ARM. Alors maintenant, nous entrons dans le prochain niveau de programmation appelé programmation ARM. Grâce à cela, nous pouvons non seulement améliorer la structure de notre code, mais également économiser de l'espace mémoire en n'utilisant pas de bibliothèques inutiles.
STMicroelectronics a introduit un outil appelé STM32Cube MX, qui génère un code de base en fonction des périphériques et de la carte STM32 sélectionnée. Nous n'avons donc pas à nous soucier du codage des pilotes et des périphériques de base. De plus, ce code généré peut être utilisé dans Keil uVision pour l'édition selon les besoins. Enfin, le code est gravé dans STM32 à l'aide du programmeur ST-Link de STMicroelectronics.
Dans ce tutoriel, nous allons apprendre à programmer le STM32F103C8 à l'aide de Keil uVision & STM32CubeMX en réalisant un projet simple d' interfaçage d'un bouton poussoir et d'une LED avec la carte Blue Pill STM32F103C8. Nous allons générer le code à l'aide de STM32Cube MX, puis éditer et télécharger le code vers STM32F103C8 à l'aide de Keil uVision. Avant d'entrer dans les détails, nous allons d'abord en apprendre davantage sur le programmeur ST-LINK et l'outil logiciel STM32CubeMX.
ST-LINK V2
Le ST-LINK / V2 est un débogueur et programmeur en circuit pour les familles de microcontrôleurs STM8 et STM32. Nous pouvons télécharger du code sur STM32F103C8 et d'autres microcontrôleurs STM8 et STM32 en utilisant ce ST-LINK. Le module d'interface monofilaire (SWIM) et les interfaces de débogage JTAG / fil série (SWD) sont utilisés pour communiquer avec tout microcontrôleur STM8 ou STM32 situé sur une carte d'application. Comme les applications STM32 utilisent l'interface USB pleine vitesse pour communiquer avec les environnements de développement intégrés Atollic, IAR, Keil ou TASKING, nous pouvons donc utiliser ce matériel pour programmer les microcontrôleurs STM 8 et STM32.
Ci-dessus se trouve l'image du dongle ST-LINK V2 de STMicroelectronics qui prend en charge la gamme complète d'interface de débogage STM32 SWD, une interface simple à 4 fils (y compris l'alimentation), rapide et stable. Il est disponible dans une variété de couleurs. Le corps est en alliage d'aluminium. Il a une indication LED bleue car il est utilisé pour observer l'état de fonctionnement du ST-LINK. Les noms des broches sont clairement marqués sur la coque comme nous pouvons le voir dans l'image ci-dessus. Il peut être interfacé avec le logiciel Keil où le programme peut être flashé sur les microcontrôleurs STM32. Voyons donc dans ce tutoriel comment ce programmeur ST-LINK peut être utilisé pour programmer le microcontrôleur STM32. L'image ci-dessous montre les broches du module ST-LINK V2.
Remarque: lorsque vous connectez ST-Link à l'ordinateur pour la première fois, nous avons besoin d'un pilote de périphérique pour être installé. Les pilotes de périphériques peuvent être trouvés dans ce lien en fonction de votre système d'exploitation.
STM32CubeMX
L'outil STM32CubeMX fait partie de STMicroelectronics STMCube. Cet outil logiciel facilite le développement en réduisant les efforts, le temps et les coûts de développement. STM32Cube inclut STM32CubeMX qui est un outil de configuration de logiciel graphique qui permet la génération de code d'initialisation C à l'aide d'assistants graphiques. Ce code peut être utilisé dans divers environnements de développement comme keil uVision, GCC, IAR etc. Vous pouvez télécharger cet outil à partir du lien suivant.
STM32CubeMX a les caractéristiques suivantes
- Résolveur de conflits Pin Out
- Un assistant de réglage de l'arbre d'horloge
- Un calculateur de consommation d'énergie
- Un utilitaire effectuant la configuration des périphériques MCU comme les broches GPIO, USART, etc.
- Un utilitaire effectuant la configuration des périphériques MCU pour les piles middleware comme USB, TCP / IP, etc.
Matériaux nécessaires
Matériel
- Panneau de pilule bleu STM32F103C8
- ST-LINK V2
- Bouton poussoir
- LED
- Planche à pain
- Fils de cavalier
Logiciel
- Outil de génération de code STM32CubeMX (lien)
- Keil uVision 5 (lien)
- Pilotes pour ST-Link V2 (lien)
Schéma de circuit et connexions
Vous trouverez ci-dessous le schéma de circuit pour connecter simplement une LED avec la carte STM32 à l' aide d'un bouton poussoir.
Connexion entre ST-LINK V2 et STM32F103C8
Ici, la carte STM32 Blue Pill est alimentée par le ST-LINK qui est connecté au port USB de l'ordinateur. Nous n'avons donc pas besoin d'alimenter le STM32 séparément. Le tableau ci-dessous montre la connexion entre ST-Link et le pilulier bleu.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3 V |
LED et bouton poussoir
La LED est utilisée pour indiquer la sortie du panneau Blue Pill lorsqu'un bouton poussoir est enfoncé. L'anode de la LED est connectée à la broche PC13 de la carte Blue Pill et la cathode est mise à la terre.
Un bouton poussoir est connecté pour fournir une entrée à la broche PA1 de la carte Blue Pill. Nous devons également utiliser une résistance de rappel de valeur 10k car la broche peut flotter sans aucune entrée lorsque le bouton est relâché. Une extrémité du bouton-poussoir est connectée à la terre et l'autre extrémité à la broche PA1 et une résistance de rappel de 10k est également connectée à 3,3V de la carte Blue Pill.
Création et gravure d'un programme dans STM32 à l'aide de Keil uVision et ST-Link
Étape 1: - Installez d' abord tous les pilotes de périphériques pour ST-LINK V2, les outils logiciels STM32Cube MX & Keil uVision et installez les packages nécessaires pour STM32F103C8.
Étape 2: - La deuxième étape est Open >> STM32Cube MX
Étape 3: - Cliquez ensuite sur Nouveau projet
Étape 4: - Après cela, recherchez et sélectionnez notre microcontrôleur STM32F103C8
Étape 5: - Maintenant, le croquis de brochage de STM32F103C8 apparaît, ici nous pouvons définir les configurations de broches. Nous pouvons également sélectionner nos broches dans la section des périphériques en fonction de notre projet.
Étape 6: - Vous pouvez également cliquer directement sur la broche et une liste apparaît, sélectionnez maintenant la configuration de broche requise.
Étape 7: - Pour notre projet, nous avons sélectionné PA1 comme GPIO INPUT, PC13 comme GPIO OUTPUT & SYS debug comme SERIAL WIRE, ici seulement nous connectons les broches ST-LINK SWCLK & SWDIO. Les broches sélectionnées et configurées apparaissent en VERT. Vous pouvez noter que dans l'image ci-dessous.
Étape 8: - Ensuite, sous l' onglet Configuration , sélectionnez GPIO pour définir les configurations de broches GPIO pour les broches que nous avons sélectionnées.
Étape 9: - Ensuite, dans cette boîte de configuration des broches, nous pouvons configurer l'étiquette utilisateur pour les broches que nous utilisons, c'est-à-dire les noms de broches définis par l'utilisateur.
Étape 10: - Après cela, cliquez sur Projet >> Générer du code .
Étape 11: - La boîte de dialogue des paramètres du projet apparaît maintenant. Dans cette boîte, choisissez le nom et l'emplacement de votre projet et sélectionnez l'environnement de développement. Nous utilisons Keil, alors sélectionnez MDK-ARMv5 comme IDE.
Étape 12: - Ensuite, sous l' onglet Générateur de code , sélectionnez Copier uniquement les fichiers de bibliothèque nécessaires , puis cliquez sur OK.
Étape 13: - La boîte de dialogue de génération de code apparaît maintenant. Sélectionnez Ouvrir le projet pour ouvrir le projet automatiquement le code généré dans Keil uvsion.
Étape 14: - L'outil Keil uVision s'ouvre maintenant avec notre code généré dans STM32CubeMx avec le même nom de projet avec la bibliothèque nécessaire et les codes configurés pour les broches que nous avons sélectionnées.
Étape 15: - Il nous suffit maintenant d'inclure la logique pour effectuer une action au niveau de la LED de sortie (broche PC13) lorsque le bouton est enfoncé et relâché à l'entrée GPIO (broche PA1). Alors sélectionnez notre programme main.c pour inclure quelques codes.
Étape 16: - Maintenant, ajoutez le code dans la boucle while (1) , voir l'image ci-dessous où j'ai mis en évidence cette section pour exécuter le code en continu.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Le bouton DETECTS est enfoncé {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Pour rendre la sortie haute lorsque le bouton appuie sur d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Pour rendre la sortie faible lorsque vous appuyez sur le bouton}}
Étape 17: - Après avoir fini de modifier le code, cliquez sur l' icône Options pour la cible sous l' onglet de débogage, sélectionnez Débogueur ST-LINK
Cliquez également sur le bouton Paramètres , puis sous l' onglet Téléchargement Flash, cochez la case Réinitialiser et exécuter et cliquez sur «OK».
Étape 18: - Cliquez maintenant sur l' icône Reconstruire pour reconstruire tous les fichiers cibles.
Étape 19: - Vous pouvez maintenant brancher le ST-LINK à l'ordinateur avec les connexions de circuit prêtes et cliquer sur l'icône TÉLÉCHARGER ou appuyer sur F8 pour flasher le STM32F103C8 avec le code que vous avez généré et modifié.
Étape 20: - Vous pouvez remarquer l'indication clignotante en bas de la fenêtre keil uVision.
Sortie de la carte STM32 programmée par Keil
Maintenant, lorsque nous appuyons sur le bouton poussoir, la LED s'allume et lorsque nous la relâchons, la LED s'éteint.
Programme
La partie principale que nous avons ajoutée dans le programme généré est indiquée ci-dessous. Ce code ci-dessous doit être inclus dans while (1 ) du programme main.c généré par le STM32CubeMX. Vous pouvez revenir à l'étape 15 à l'étape 17 pour savoir comment il doit être ajouté dans le programme main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Le bouton DETECTS est enfoncé {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Pour rendre la sortie haute lorsque le bouton appuie sur d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Pour rendre la sortie faible lorsque vous appuyez sur le bouton}}
Le processus complet de création et de téléchargement du projet sur la carte STM32 est également expliqué dans la vidéo donnée à la fin. Le code complet du fichier main.c est également donné ci-dessous, y compris le code ci-dessus.
De plus, vous pouvez trouver notre ensemble complet de projets STM32 ici.