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… »
2014-12-31_1006092) Selectionner « STmicro-ARM »

 

2015-01-03_1716453) Entrer le nom du nouveau projet et le chemin pour ce projet

 

2014-12-31_1006224) Laisser les options par défaut

 

2014-12-31_100627

5) Choisir Cortex M4 (F3xx-F4xx)

 

2014-12-31_100632

6) Choisir STM32F4xx

 

2014-12-31_100659

7) Choisir le micro-contrôleur STM32F407VG.

 

2014-12-31_100713

8) Laisser la configuration par défaut

 

2015-01-03_170518

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

2014-12-31_102457

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

2015-01-03_172641

 

4) Valider les 2 boites de dialogue qui listent les fichiers à importer

2015-01-03_173859 2014-12-31_101723

 

5) Pour éviter d’inclure d’autres dépendances, il faut supprimer les fichiers de gestion « audio »

2015-01-03_174657

 

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  🙂

Comments are closed.