Activation des floats et ajout de librairies externes
Optimisez vos projets STM32 en activant la prise en charge des nombres flottants et en intégrant des librairies externes
1. Introduction
Lorsqu'on développe des applications sur microcontrôleurs STM32, deux défis fréquents sont la gestion correcte des nombres à virgule flottante (floats) et l'intégration de librairies tierces pour étendre les fonctionnalités de base. Ce guide vous accompagne pas à pas dans ces deux aspects essentiels:
- L'activation et la configuration correcte des nombres flottants pour les opérations mathématiques et l'affichage
- L'ajout et l'intégration de librairies externes provenant de dépôts comme GitHub
2. Activation de la prise en compte des floats pour printf/scanf
Lorsque vous travaillez avec des capteurs comme le DHT qui renvoient des mesures décimales, il est essentiel d'activer correctement la prise en charge des nombres à virgule flottante (floats) dans votre projet STM32.
2.1 Étapes pour activer les floats
- Ouvrez les propriétés du projet :
- Clic droit sur votre projet > Properties
- Activez la bibliothèque mathématique :
- Allez dans "C/C++ Build" > "Settings"
- Dans l'onglet "Tool Settings" > "MCU GCC Linker" > "Libraries"
- Ajoutez
m
dans la liste des bibliothèques (Libraries (-l))
- Activez le support des floats pour printf/scanf :
- Dans "MCU GCC Compiler" > "Miscellaneous"
- Ajoutez ces flags dans "Other flags":
-u _printf_float -u _scanf_float
- Appliquez et reconstruisez le projet :
- Cliquez sur "Apply and Close"
- Reconstruisez votre projet (Clean and Build)

Illustration : Configuration des floats dans STM32CubeIDE.
2.2 Exemple d'utilisation des floats
Voici un exemple de code utilisant des nombres à virgule flottante :
#include <stdio.h>
void example(void) {
float temperature = 25.75f;
float humidity = 68.32f;
// Nécessite l'activation des floats dans printf
printf("Température: %.2f°C, Humidité: %.2f%%\r\n", temperature, humidity);
// Si les floats ne sont pas activés dans printf, alternative:
int temp_int = (int)temperature;
int temp_dec = (int)((temperature - temp_int) * 100);
printf("Température: %d.%02d°C\r\n", temp_int, temp_dec);
}
3. Ajout d'une librairie externe
Pour intégrer une librairie externe comme STM32_DHT de GitHub à votre projet STM32CubeIDE, suivez ces étapes:
3.1 Téléchargement de la librairie
- Identifiez la source de la librairie :
- Téléchargez les fichiers:
- Option 1: Cliquez sur le bouton "Code" > "Download ZIP" pour télécharger tout le dépôt
- Option 2: Téléchargez individuellement les fichiers nécessaires (généralement .c et .h)
- Option 3: Utilisez Git pour cloner le dépôt:
git clone https://github.com/weedmanu/STM32_Libraries.git
3.2 Création de la structure de dossiers
- Ajoutez un dossier pour les librairies externes:
- Dans l'explorateur de projet STM32CubeIDE, cliquez droit sur votre projet
- New > Folder
- Nommez-le "Libraries" ou "External_Libraries"
- Créez un sous-dossier pour la librairie spécifique:
- Cliquez droit sur le dossier "Libraries"
- New > Folder
- Nommez-le "DHT" (pour le capteur DHT dans notre exemple)
3.3 Importation des fichiers
-
Importez les fichiers de la librairie:
- Cliquez droit sur le dossier "DHT"
- Import... > General > File System > Next
- Naviguez jusqu'à l'emplacement où vous avez téléchargé/extrait les fichiers
- Sélectionnez les fichiers nécessaires (dht.c, dht.h)
- Finish
- Vérifiez la concordance des fichiers:
- Assurez-vous que les fichiers importés sont compatibles avec votre version de STM32CubeIDE
- Vérifiez les dépendances et les inclusions
3.4 Configuration des chemins d'inclusion
- Ajoutez le chemin vers la librairie:
- Cliquez droit sur votre projet > Properties
- Allez dans "C/C++ General" > "Paths and Symbols"
- Sélectionnez l'onglet "Includes"
- Sélectionnez "GNU C" dans la liste des langages
- Cliquez sur "Add..."
- Sélectionnez "Workspace..." pour un chemin relatif au workspace
- Naviguez jusqu'à votre dossier Libraries/DHT
- Cochez "Add to all configurations"
- OK

Illustration : Structure de dossiers pour les librairies externes.
- Ajoutez le dossier source:
- Dans les propriétés du projet, allez à "C/C++ General" > "Paths and Symbols"
- Sélectionnez l'onglet "Source Location"
- Cliquez sur "Add Folder..."
- Sélectionnez le dossier "Libraries/DHT"
- OK

Illustration : Configuration des chemins d'inclusion dans STM32CubeIDE.
3.5 Adaptation du code (si nécessaire)
Pour intégrer correctement la librairie à votre projet, il est généralement nécessaire d'effectuer les ajustements suivants :
- Modifier l'inclusion du fichier HAL :
- Dans le fichier d'en-tête de la librairie (par exemple,
dht.h
), remplacez#include "stm32l4xx_hal.h"
par l'inclusion correspondant à votre carte STM32 (par exemple,#include "stm32f4xx_hal.h"
pour une carte STM32F4).
- Dans le fichier d'en-tête de la librairie (par exemple,
- Adapter les périphériques utilisés :
- Configurez les timers, ADC, ou I2C en fonction des ressources matérielles de votre projet.
- Assurez-vous que les initialisations dans le fichier
main.c
correspondent aux broches et périphériques choisis pour votre projet.
4. Conclusion
En suivant ces étapes, vous avez maintenant:
- Activé correctement la prise en charge des nombres à virgule flottante dans votre projet STM32
- Intégré une librairie externe provenant de GitHub dans votre environnement de développement
Ces compétences vous permettront de développer des applications plus complexes en tirant parti à la fois des capacités mathématiques avancées et du code partagé par la communauté.