7 - Afficher des infos avec le "Virtual COM port"

De Wiki L.A.B
Révision de 2 mars 2018 à 16:22 par Paul.adam (discussion | contributions) (Redirection du "output" de la fonction "C" "printf")

Aller à : navigation, rechercher

7 - Afficher des infos avec le "Virtual COM port"

Les cartes de développement de ST implémentent un "Virtual COM port". Ainsi les signaux "RX" et "TX" d'un périphérique UART ou USART (dépendant de la carte utilisé) sont redirigé via le debug port "ST-Link" sur le USB du PC. Ainsi l'utilisateur peut ouvrir un terminal sur ce USB port un "virtual COM port".

Ainsi si le code embarqué envoie des chaînes de caractères sur l'UART, ils vont être affiché dans le terminal.

Le "Virtual COM port" sur la carte Nucleo

Sur notre carte "NUCLEO-L476RG", le périphérique USART2 est utilisé. Ainsi on va le mettre en service dans le logiciel STM32CubeMX comme déjà vu dans les ateliers précédents. Ainsi le code d'initialisation va être créé automatiquement.


TestUart.PNG

Redirection du "output" de la fonction "C" "printf"

Pour afficher du texte à l'interieur d'un code "C", la standard librairie propose la fonction "printf" comme "print formaté".

La fonction prend un premier paramètre de "format". Ceci peut être un texte à afficher lui même ou contenir des balise qui seront remplacé dans le display par des valeurs des paramètres suivantes ou des caractères "échappé" (e.g.: "\n". Exemples:

  • printf(


int _write(int file, char *ptr, int len)
{
 if ( HAL_UART_Transmit( &huart2, ( unsigned char* ) ptr, len, 1000 ) != HAL_OK )
  return -1;
 return len;
}



int _read(int file, char *ptr, int len)
{
 HAL_StatusTypeDef status;
 int retcode = 0;

 if (len != 0)
 {
  status = HAL_UART_Receive( &huart2, (uint8_t *) ptr, len, HAL_MAX_DELAY);

  if (status == HAL_OK)
   retcode = len;
  else
   retcode = -1;
 }
 return( retcode);
}