Table des matières:

Carte de découverte STM32F4 et communication Python USART (STM32CubeMx) : 5 étapes
Carte de découverte STM32F4 et communication Python USART (STM32CubeMx) : 5 étapes

Vidéo: Carte de découverte STM32F4 et communication Python USART (STM32CubeMx) : 5 étapes

Vidéo: Carte de découverte STM32F4 et communication Python USART (STM32CubeMx) : 5 étapes
Vidéo: Как запрограммировать HEX-файл на плату обнаружения STM32F4 2024, Novembre
Anonim
Carte de découverte STM32F4 et communication Python USART (STM32CubeMx)
Carte de découverte STM32F4 et communication Python USART (STM32CubeMx)
Carte de découverte STM32F4 et communication Python USART (STM32CubeMx)
Carte de découverte STM32F4 et communication Python USART (STM32CubeMx)

Salut! Dans ce tutoriel, nous allons essayer d'établir une communication USART entre le MCU ARM STM32F4 et Python (il peut être remplacé par n'importe quel autre langage). Alors, commençons:)

Étape 1: Configuration logicielle et matérielle requise

En termes de matériel, vous avez besoin de:

  • Carte de découverte STM32F4 (ou toute autre carte STM32)
  • Convertisseur USB vers TTL

Au niveau du logiciel:

  • STM32CubeMX
  • Keil uVision5
  • Python avec bibliothèque série installée

Étape 2: Configuration du STM32CubeMX

Comprenons d'abord ce que nous voulons faire. Nous voulons transmettre des données à bord à partir de Python via USART et vérifier si nous avons des données correctes et basculer la LED. Nous devons donc activer USART et Led.

  • Activez USART2 à partir de l'onglet Connectivité.

    • Changer de mode en Asynchrone
    • Débit en bauds à 9600 Bits/s
    • Longueur de mot à 8 Bits sans parité
    • Pas de bit de parité
    • À partir des paramètres DMA, ajoutez USART2_RX en mode circulaire
    • À partir des paramètres NVIC, activez l'interruption globale USART2
  • Activer la LED en cliquant sur PD12

Ensuite, générez du code:)

Étape 3: Développement du logiciel Keil

#comprendre

#comprendre

Ces bibliothèques seront nécessaires dans les opérations sur les chaînes et pour définir les variables booléennes.

/* USER CODE BEGIN 2 */ HAL_UART_Receive_DMA(&huart2, (uint8_t *) data_buffer, 1); /* CODE UTILISATEUR FIN 2 */

Ici, la réception UART avec DMA a commencé.

/* USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Empêcher l'avertissement de compilation des arguments inutilisés */ UNUSED(huart); /* NOTE: Cette fonction ne doit pas être modifiée, lorsque le rappel est nécessaire, le HAL_UART_RxCpltCallback peut être implémenté dans le fichier utilisateur */ if(data_buffer[0] != '\n'){ data_full[index_] = data_buffer[0]; index_++; }autre{ index_ = 0; fini = 1; } //HAL_UART_Transmit(&huart2, data_buffer, 1, 10); } /* CODE UTILISATEUR FIN 4 */

C'est ISR qui est activé lorsque nous obtenons un octet de caractère. Donc. nous obtenons cet octet et l'écrivons dans le data_full qui contient toutes les données reçues jusqu'à ce que nous obtenions '\n'. Lorsque nous obtenons '\n', nous créons le drapeau fini 1 et la boucle while:

while (1) { /* USER CODE END WHILE */ if(finished){ if(strcmp(data_full, cmp_) == 0){ HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); } memset(data_full, '\0', strlen(data_full)); fini = 0; }autre{ _NOP (); } /* CODE UTILISATEUR DEBUT 3 */ }

Si le drapeau fini est ÉLEVÉ, nous comparons le contenu des données reçues complètes et des données que nous désirons et s'ils sont égaux, nous basculons la LED. Après cela, nous effaçons l'indicateur de finition et attendons de nouvelles données et effaçons également le tableau data_full afin de ne pas écraser le tableau.

Étape 4: Développement de logiciels Python

Donc, ici, nous voulons envoyer notre numéro avec '/n' à la fin, car le logiciel Keil aura besoin de le voir pour connaître la fin.

importer la série

ser = serial. Serial('COM17') #vérifiez ce port sur votre appareil à partir du Gestionnaire de périphériques

ser.write(b'24\n')

Vous devriez voir que la LED bascule à chaque fois que vous envoyez '24\n'. Si vous envoyez autre chose, cela ne devrait pas l'affecter.

Étape 5: Conclusion

Nous avons atteint la fin du tutoriel. si vous avez un problème ou une question, n'hésitez pas à demander. Je vais essayer d'aider autant que je peux. Merci beaucoup:)

Conseillé: