Catégorie:STM32 : Différence entre versions

De Wiki L.A.B
Aller à : navigation, rechercher
(Premier programme “blinky”)
(Les ateliers STM32)
 
(78 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 8 : Ligne 8 :
 
|  || Très faible consommation || Usages généraux || Hautes performances
 
|  || Très faible consommation || Usages généraux || Hautes performances
 
|-
 
|-
| Cortex M0 ||  ||STM32F0 ||
+
| Cortex M0/M0+ ||STM32L0||STM32F0 ||
|-
+
| Cortex M0+ ||STM32L0|| ||
+
 
|-
 
|-
 
| Cortex M3 ||STM32L1||STM32F1||STM32F2
 
| Cortex M3 ||STM32L1||STM32F1||STM32F2
 
|-
 
|-
| Cortex M4 || ||STM32F3 ||
+
| Cortex M4 ||STM32L4||STM32F3||STM32F4
|-
+
| ||STM32L4|| ||STM32F4
+
 
|-
 
|-
| Cortex M7 || || ||STM32F7
+
| Cortex M7 || || ||STM32F7 <br> STM32H7
 
|}
 
|}
 
<br>
 
<br>
 
http://www.st.com/en/microcontrollers/stm32-32-bit-arm-cortex-mcus.html
 
http://www.st.com/en/microcontrollers/stm32-32-bit-arm-cortex-mcus.html
 
<br>
 
<br>
 +
 
== Les cartes de prototypages proposées par ST ==
 
== Les cartes de prototypages proposées par ST ==
 
STMicroelectronics propose toute une gamme de cartes de prototypage pour diverses applications et différents microcontrôleurs STM32.<br>
 
STMicroelectronics propose toute une gamme de cartes de prototypage pour diverses applications et différents microcontrôleurs STM32.<br>
Ligne 38 : Ligne 35 :
 
Ces cartes (de couleur verte) ont été développées pour le marché professionnel.<br> Ces cartes embarquent en général de très nombreux composants électroniques supplémentaires. Elles sont souvent assez chères.
 
Ces cartes (de couleur verte) ont été développées pour le marché professionnel.<br> Ces cartes embarquent en général de très nombreux composants électroniques supplémentaires. Elles sont souvent assez chères.
  
= Introductions aux ateliers STM32 =
+
= '''Introductions aux ateliers STM32''' =
 
+
= Les ateliers STM32 =
+
 
+
== Premier programme “blinky” ==
+
Ce tout premier programme va nous permettre de valider l'installation de l'environnement de développement SW4STM32. <br>
+
Dans notre exemple nous allons utiliser la carte “Nucleo32” de référence “NUCLEO-F303K8”. <br>
+
 
<br>
 
<br>
[[Fichier:Nucleo32.png|center|]]
+
Dans les ateliers, on va utiliser l'outil "STM32CubeMx" pour la génération de code "canevas" et l'IDE "eclipse" pour la compilation et le debug.
=== Création du projet avec STM32CubeMx ===
+
Un tutoriel permettant d'installer l'ensemble des outils de développement OpenSTM32 est disponible à la page suivante :<br>
On va utiliser “STM32CubeMx” pour générer la trame du code source :<br>
+
http://wiki.labaixbidouille.com/index.php/Installation_de_l%27environnement_de_d%C3%A9veloppement_OpenSTM32
Après avoir ouvert “STM32CubeMx”.
+
Il faut exécuter “New Project”. <br>
+
Dans la fenêtre ouverte, il faut choisir l’onglet “Board Selector”. <br>
+
Le “Type of Board” et “MCU Series” doivent correspondre à la carte connectée. <br> Dans notre exemple, on choisira “Type of Board” : Nucleo32 (le nombre de cartes listées n'étant pas très grand, il ne sera pas nécessaire de préciser “MCU Series”)<br>
+
Dans le champs “Boards List:”, on choisit la carte connectée en double cliquant. Dans notre exemple : “Nucleo32” de référence “NUCLEO-F303K8” <br>
+
  
Sur cette carte, une LED est connectée sur la broche “PB3” (appellation de STM32) correspondant à la broche D13 du connecteur arduino.<br>
+
= '''Les ateliers STM32''' =
 
+
Dans l’onglet “Pinout”, il faut cliquer dans le dessin du chip sur la broche “PB3”. Dans le menu, il faut sélectionner “GPIO_Output”. La broche change alors de couleur en devenant verte.<br>
+
 
<br>
 
<br>
[[Fichier:STM32CubeMX.PNG]]
 
 
<br>
 
<br>
 +
[[ 1 - Premier programme “blinky”]]
 
<br>
 
<br>
Dans le menu “Project” -> “Settings…”, on ouvre la boîte de dialogue “Project Settings” <br>
+
[[ 2 - Commander l'intensité lumineuse d'une LED (PWM)”]]
On saisi un nom de projet (“Project Name”) et le répertoire (“Project Location”).<br>
+
Avec le bouton “Browse”, on choisit le répertoire “workspace”, qu’on avait spécifié lors de l'installation d'eclipse.<br>
+
Dans la liste “Toolchain / IDE” il faut choisir le “SW4STM32” '''(très important!!!)'''.<br>
+
On ferme le dialogue par “OK”.<br>
+
 
<br>
 
<br>
Lors de la première utilisation de STM32CubeMx, toutes les sources des firmware packages ne sont pas encore installées. <br>
+
[[ 3 - Commander une LED RGB par PWM”]]
Il nous est proposé de les télécharger depuis le site st.com.
+
 
<br>
 
<br>
Par le menu “Project” -> “Generate Code…”, on peut générer automatiquement le code de base.<br>
+
[[ 4 - Contrôle d’un moteur "servo à rotation continue" avec un variateur PWM”]]
Dans la boîte de dialogue “Code Generation”, on faut cliquer sur “Open Project” pour visualiser le code dans eclipse.<br>
+
=== Développement du code source dans eclipse ===
+
Le projet “Blinky” contient les répertoires :
+
* “Drivers”,
+
* “Inc”,
+
* “Src”
+
* “startup”.<br>
+
Il faut ouvrir “main.c” du répertoire “Src”.<br>
+
 
<br>
 
<br>
Dans la fonction “void main(void)”, on trouve trois appels de fonction “HAL_Init()”, “SystemClock_Config()” et “MX_GPIO_Init()” nécessaires pour l’initialisation du système.<br>
+
[[ 5 - Utiliser un "bouton poussoir" avec un "GPIO in"]]
Ensuite, il y a une boucle infinie, dans laquelle on peut ajouter son propre code, par exemple : <br>
+
<br>
 
+
[[ 6 - Contrôle d’un moteur "pas à pas" avec quatres "GPIO out" ]]
<syntaxhighlight lang="cpp" enclose="div">
+
<br>
while (1)
+
[[ 7 - Afficher des infos avec le "Virtual COM port" ]]
{
+
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 1 );  // LED on PB3 ON
+
  HAL_Delay(500);                            // wait 500 milli seconds
+
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, 0 );  // LED on PB3 OFF
+
  HAL_Delay(500);                            // wait 500 milli seconds
+
}
+
</syntaxhighlight>
+
 
+
=== Compilation ===
+
Pour compiler le projet, il faut aller dans le menu “Project” -> “Build Project”.<br>
+
Eclipse va utiliser la toolchain “GNU Tools ARM Embedded” pour la compilation.
+
=== Débogage ===
+
Pour déboguer le projet; il faut aller dans le menu “Run” -> “Debug”.<br>
+
Dans la boîte de dialogue “Debug As” il faut choisir “Ac6 STM32 C/C++ Application”.<br>
+
Eclipse va utiliser OpenOCD et STLink pour communiquer avec le microcontrôleur.<br>
+
Avec les fonctionnalités de debug, on peut avancer pas à pas dans le code et voir la LED s’allumer et s'éteindre.<br>
+
“Resume (F8)” va exécuter le code sans intervention supplémentaire de l’IDE et donc la LED va clignoter...
+
 
+
=== Rajout d'une LED externe ===
+
On peut facilement rajouter une LED externe en montant la carte nucleo32 F303K8 sur une plaque d'essai (breadbord)et en branchant l'anode (broche la plus longue) d'une LED sur la broche D13 et sa cathode à une résistance d'environ 220 Ohms reliées au 0V (GND).
+
 
<br>
 
<br>
[[Fichier:Blinky_LED_ext.jpg]]
+
[[ 8 - I2C (Inter Integrated Circuit) ]]
 
<br>
 
<br>

Version actuelle en date du 23 mars 2018 à 16:51

Les microcontrôleurs STM32

Les familles de microcontrôleurs STM32

Il existe plusieurs familles de microcontrôleurs STM32, classés selon leur cœur ARM

Cœur ARM Famille de STM32
Très faible consommation Usages généraux Hautes performances
Cortex M0/M0+ STM32L0 STM32F0
Cortex M3 STM32L1 STM32F1 STM32F2
Cortex M4 STM32L4 STM32F3 STM32F4
Cortex M7 STM32F7
STM32H7


http://www.st.com/en/microcontrollers/stm32-32-bit-arm-cortex-mcus.html

Les cartes de prototypages proposées par ST

STMicroelectronics propose toute une gamme de cartes de prototypage pour diverses applications et différents microcontrôleurs STM32.

Les cartes "Discovery"

Historiquement, les “discovery boards” étaient développées pour montrer aux clients les possibilités du microcontrôleur STM32.
De nombreuses cartes (de couleur verte) embarquent des composants supplémentaires (par exemple un accéléromètre) pour montrer leur fonctionnement et leur mise en œuvre.

Les cartes "Nucleo"

Les cartes de la gamme “nucleo” (de couleur blanche), sont en général (pour la gamme nucleo 64) équipés des connecteurs compatibles “arduino shield”.
Ainsi un grand nombre de "shields arduino" peuvent être utilisés avec ces cartes.

les cartes "Eval-boards"

Ces cartes (de couleur verte) ont été développées pour le marché professionnel.
Ces cartes embarquent en général de très nombreux composants électroniques supplémentaires. Elles sont souvent assez chères.

Introductions aux ateliers STM32


Dans les ateliers, on va utiliser l'outil "STM32CubeMx" pour la génération de code "canevas" et l'IDE "eclipse" pour la compilation et le debug. Un tutoriel permettant d'installer l'ensemble des outils de développement OpenSTM32 est disponible à la page suivante :
http://wiki.labaixbidouille.com/index.php/Installation_de_l%27environnement_de_d%C3%A9veloppement_OpenSTM32

Les ateliers STM32



1 - Premier programme “blinky”
2 - Commander l'intensité lumineuse d'une LED (PWM)”
3 - Commander une LED RGB par PWM”
4 - Contrôle d’un moteur "servo à rotation continue" avec un variateur PWM”
5 - Utiliser un "bouton poussoir" avec un "GPIO in"
6 - Contrôle d’un moteur "pas à pas" avec quatres "GPIO out"
7 - Afficher des infos avec le "Virtual COM port"
8 - I2C (Inter Integrated Circuit)

Pages dans la catégorie « STM32 »

Cette catégorie contient 4 pages, dont les 4 ci-dessous.