Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


Panneau latéral

logiciels:printf_stm32:accueil

Ceci est une ancienne révision du document !


Table des matières

"Printf" sur STM32

Selon les environnements de développement les “printf” ne sont pas actif pour les STM32.

Tuto

1. Mapper les pins de USART à l'aide de “CubeMX”

  • Repérer dans la documentation de votre carte les pins qui font le lien entre le microcontrôleur et le ST-Link. Pour vous aidez utiliser la fonction de recherche “Ctrl+F” et taper “UART communication” ou “USART communication”.
  • Ouvrir “CubeMX” et activer la communication “asynchrone”.
  • Dans l'onglet configuration → cliquer sur l'icône des pins précédemment sélectionnées (exemple : USART2)
  • Dans “Parameter settings” vérifier les éléments suivant :
    • BaudRate : 115200
    • WordLength : 8bits (including Parity)
    • Parity : None
    • StopBits : 1
  • Finir par générer le projet.

2. Ajouter le fichier source “syscalls.c” et des options de linkage.

  • Le fichier “syscalls.c” ce trouve dans les exemples fournie via “CubeMX”
  • Vous pouvez le trouvé grâce au fonctions de recherche de votre OS.
  • Le copier et le placer dans le dossier src de votre projet.
  • Editer le et commenté la ligne #define FreeRTOS.
  • Déplacer vous dans le dossier ou ce trouve vos linker script
  • Créer un fichier “lib.ld” et y placer ceci :

* Placeholder to list other libraries required by the application.

GROUP( )

*/

GROUP(

 libgcc.a
 libg.a
 libc.a
 libm.a
 libnosys.a

)

3. Modifier le fichier de configuration de UART (USART.c):

  • Ouvrir le fichier et placer ceci entre /* USER CODE BEGIN 0 */ et /* USER CODE END 0 */ :

#ifdef GNUC /* With GCC/RAISONANCE, small printf (option LD Linker→Libraries→Small printf

 set to 'Yes') calls __io_putchar() */

#define PUTCHAR_PROTOTYPE int io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* GNUC__ */

et coller ceci entre /* USER CODE BEGIN 1 */ et /* USER CODE END 1 */ :
<blockquote> / * @brief Retargets the C library printf function to the USART. * @param None * @retval None */ PUTCHAR_PROTOTYPE { /* Place your implementation of fputc here */ /* e.g. write a character to the USART2 and Loop until the end of transmission */ HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF); return ch; }</blockquote> Vérifier qu'il n'y est pas d'erreur au niveau de HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
Si erreur il y a il faut récupérer la variable en haut du fichier nomé UART_HandleTypeDef
huart2**;

Finir en ajoutant #include <stdio.h> dans le “main.c”.

4. Activer les options de compilation et linker:

  • Faire “Alt+Entrer” sur le nom du projet ou clic droit→ properties.
  • Dans C/C++ Build → Settings → Tool settings → Cross ARM C Linker → Miscellaneous. Cocher les options suivantes :
    • Use newlib-nano (–specs=nano.specs)
    • Use float with nano printf (-u_printf_float)
  • Dans C/C++ Build → Settings → Tool settings → Cross ARM C Linker → General.
  • Ajouter le chemin vers le fichier “lib.ld”
/home/resonancg/www/wiki/data/attic/logiciels/printf_stm32/accueil.1476194265.txt.gz · Dernière modification: 2016/10/11 15:57 de jonathan