Utiliser em::Blocks avec la STM32F4-Discovery
Après avoir beaucoup essayé d’IDE pour programmer la carte STM32F4-Discovery, mon choix s’est porté sur em::Blocks.
C’est un environnement gratuit, sans limitation de taille de code (contrairement aux version Free des IDE payants). C’est un fork de code::Blocks destiné à la génération de code embarqué. Il reconnait nativement de nombreuse cartes d’évaluation, dont la STM32F4-Discovery.
Le logiciel peut être téléchargé sur le site de em::Blocks.
Prérequis
– em:Blocks téléchargé et installé 😉 La version utilisée dans cet article est la 2.30
– STM32F4 drivers installés : a télécharger sur la page du site de ST (http://www.st.com/web/en/search/partNumberKeyword) en cherchant la référence STSW-LINK (stsw-link008 pour les driver Windows 7).
– Firmware pour la carte STM32F4-Discovery : sur la même page de recherche que ci-dessus, chercher la référence STSW-STM32068 pour pouvoir télécharge le fichier stsw-stm32068.zip.
– Créer un répertoire de travail « C:\STM32F4 » et dézipper le fichier stsw-stm32068.zip dedans. Cela doit donner :
C:\STM32F4\STM32F4-Discovery_FW_V1.1.0
Création d’un nouveau projet
Génération du code de base
1) Lancer em::Blocks. Ouvrir le menu « File / New / Project… »
2) Selectionner « STmicro-ARM »
3) Entrer le nom du nouveau projet et le chemin pour ce projet
4) Laisser les options par défaut
5) Choisir Cortex M4 (F3xx-F4xx)
6) Choisir STM32F4xx
7) Choisir le micro-contrôleur STM32F407VG.
8) Laisser la configuration par défaut
9) Sélectionner l’onglet « Target settings » et cocher la case « Run to main() ». Cela permet lors du lancement du mode debug de s’arrêter sur la première ligne du code plutôt que sur la première ligne du loader assembleur.
==> Le code est généré et est compilable.
Adaptation pour la STM32F4-Discovery
1) Recopier le firmware dans le répertoire du projet :
copier le répertoire
c:\STM32F4\STM32F4-Discovery_FW_V1.1.0\Utilities\STM32F4-Discovery
dans
c:\STM32F4\Test
2) Importer les modifications dans le projet
Faire un clique droit sur le nom du projet dans la fenêtre de gauche. Dans le menu choisir « Add files recusrsively ».
3) Sélectionner le nouveau répertoire rajouté au projet
4) Valider les 2 boites de dialogue qui listent les fichiers à importer
![]() |
![]() |
5) Pour éviter d’inclure d’autres dépendances, il faut supprimer les fichiers de gestion « audio »
Ouvrir le répertoire STM32F4-Discovery dans l’espace projet.
Faire un clique droit sur le fichier audio « stm32f4_discovery_audio_codec.c », puis choisir « Remove file from project ».
5) Prise en compte du quartz à 8Mhz
Dans le répertoire src, éditer le fichier system_stm32f4xx.c
C’est le fichier de configuration qui est automatiquement appelé au lancement du programme. Contrairement à ce qui est indiqué dans les commentaire en ligne 59, la fréquence du quartz est de 8 Mhz. Il faut onc chnager la valeur du PLL_M pour le passer à 8.
Editer la ligne 156 ou recherchez la constante PLL_M et forcer sa valeur à 8 :
#define PLL_M 8
6) Le projet maintenant prêt à être compilé.
Pour tester, je vous propose le code suivant pour main.c :
#include « stm32f4_discovery.h »
int main(void)
{
STM_EVAL_LEDInit(LED3);
STM_EVAL_LEDOn(LED3);
while(1) ;
}
En cas d’erreur lors de la compilation indiquant des erreurs sur le fichier audio, effacer le répertoire « c:\STM32F4\Test\obj\Debug » et relancer la compilation.
Génération d’un template
Pour éviter de refaire tout ce travail lors chaque nouveau projet, il est possible de créer un template de projet.
En utilisant ce projet « Test » qui est configuré correctement, ouvrir le menu « File / Save project as template… » et choisir le nom du template.
Pour les nouveaux projets, il suffit de faire « File / New / From Template… » et de choisir votre template pour avoir automatiquement toute la configuration appliquée par défaut 🙂