Un peu moins de STM32CubeMX

STM32CubeMX est pratique pour :

  • déterminer l'affectation des broches ;
  • déterminer les coefficients des multiplicateurs et diviseurs d'horloge ;
  • générer le code d'initialisation en utiliser CMSIS et le HAL du processeur ;
  • générer le Makefile initial.

Il est par contre lourd dans certains cas :

  • Il utilise généralement une version de FreeRTOS qui n'est pas la dernière en date.
  • Il utilise FreeRTOS à travers la surcouche CMSIS-OS qui rajoute des surcoûts à chaque appel de fonction.
  • Il a un côté « magique » qui plaît à certains programmeurs mais déplaît à d'autres.

Nous allons donc déSTM32CubeMXiser notre application avant de l'étendre.

Copie de la structure

Une fois votre projet "button" fonctionnel, copiez les fichiers gérés par git dans un nouveau projet "tpstm32" et ajoutez les fichiers. Ce nouveau projet doit compiler. Committez dans git, pushez.

DéCMSIS-OSisation

Dans le fichier main.c généré, remplacez toutes les références à des types et fonctions de CMSIS-OS (commençant par "os") par des types et fonctions natifs de FreeRTOS. Cela nécessitera l'ajout de certains headers de FreeRTOS (lesquels ?). Enlevez l'include de "cmsis-os" et effacez tous les fichiers de la couche d'adaptation. Vérifiez que l'application fonctionne toujours après avoir modifié le Makefile, puis committez dans git et pushez.

Mise à jour de FreeRTOS

Remplacez les sources de FreeRTOS par la dernière version. Vérifiez que tout fonctionne toujours, committez, pushez.

Nettoyage du code

Enlevez tous les restes de "USER CODE BEGIN" / "USER CODE END" qui persistent. Assurez vous de comprendre le code qui reste et pourquoi vous le gardez. Testez, committez, pushez. Notez que vous pouvez aussi enlever les commentaires qui vous semblent inutiles pour alléger la structure.

Normalement, il ne reste plus qu'un programme qui utilise FreeRTOS, CMSIS pour ce qui concerne le cœur de Cortex-M et le HAL de ST pour gérer les spécificités du STM32L4.

Version alternative : Meson

Alternativement aux deux dernières étapes, vous pouvez partir du squelette donné ci-dessous qui utilise Meson et ninja pour construire l'application et y réintégrer votre code (toujours à l'endroit prévu). Vous pouvez utiliser un Makefile si vous préférez, charge à vous de le réécrire.

Fichier attachéTaille
Fichier Squelette d'application utilisant Meson et ninja74.72 Mo