Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


logiciels:printf_stm32:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
logiciels:printf_stm32:accueil [2016/10/11 14:33]
jonathan [Printf sur STM32]
logiciels:printf_stm32:accueil [2017/08/29 11:20]
jonathan [Tuto]
Ligne 5: Ligne 5:
 ===== Tuto ===== ===== 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 */** :\\ 
 +<code c+>
 +/**
 +  * @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;
 +}</code c+>
 +    
 +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"
 +
 +5. Test.
 +   * Placer un text dans le main.c
 +exemple : printf("salut \n");
 +      HAL_Delay(1000);
 +      Le retour chariot et important!!!
/home/resonancg/www/wiki/data/pages/logiciels/printf_stm32/accueil.txt · Dernière modification: 2017/08/29 11:25 de jonathan