Inhoudsopgave:

STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx): 5 stappen
STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx): 5 stappen

Video: STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx): 5 stappen

Video: STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx): 5 stappen
Video: GIAO TIẾP UART STM32F407 VÀ ESP32 2024, Juli-
Anonim
STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx)
STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx)
STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx)
STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx)

Hoi! In deze tutorial zullen we proberen om USART-communicatie tot stand te brengen tussen STM32F4 ARM MCU en Python (deze kan worden vervangen door elke andere taal). Dus laten we beginnen:)

Stap 1: Software- en hardwarevereisten

Qua hardware heb je nodig:

  • STM32F4 Discovery Board (of een ander STM32-bord)
  • USB naar TTL-converter

Qua software:

  • STM32CubeMX
  • Keil uVision5
  • Python met seriële bibliotheek geïnstalleerd

Stap 2: STM32CubeMX-configuratie

Laten we eerst begrijpen wat we willen doen. We willen gegevens van Python naar het bord verzenden via USART en controleren of we de juiste gegevens hebben en een toggle-led hebben. We moeten dus USART en Led inschakelen.

  • Schakel USART2 in op het tabblad Connectiviteit.

    • Modus wijzigen in Asynchroon
    • Baudrate tot 9600 Bits/s
    • Woordlengte tot 8 bits zonder pariteit
    • Geen pariteitsbit
    • Voeg vanuit DMA-instellingen USART2_RX toe in cicular-modus
    • Schakel vanuit NVIC-instellingen USART2 global interrupt in
  • Schakel LED in door op PD12. te klikken

Genereer dan code:)

Stap 3: Keil-softwareontwikkeling

#erbij betrekken

#erbij betrekken

Deze bibliotheken zijn nodig bij tekenreeksbewerkingen en om booleaanse variabelen te definiëren.

/* GEBRUIKERSCODE BEGIN 2 */ HAL_UART_Receive_DMA(&huart2, (uint8_t *) data_buffer, 1); /* GEBRUIKERSCODE EINDE 2 */

Hier is UART-ontvangst met DMA gestart.

/* GEBRUIKERSCODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Voorkom ongebruikte argument(en) compilatiewaarschuwing */ UNUSED(huart); /* OPMERKING: Deze functie mag niet worden gewijzigd, wanneer de callback nodig is, kan de HAL_UART_RxCpltCallback worden geïmplementeerd in het gebruikersbestand */ if(data_buffer[0] != '\n'){ data_full[index_] = data_buffer[0]; index_++; }anders{ index_ = 0; klaar = 1; } //HAL_UART_Transmit(&huart2, data_buffer, 1, 10); } /* GEBRUIKERSCODE EINDE 4 */

Dit is ISR die wordt geactiveerd wanneer we één byte karakter krijgen. Dus. we krijgen die byte en schrijven deze naar de data_full die de volledige ontvangen gegevens bevat totdat we '\n' krijgen. Wanneer we '\n' krijgen, maken we voltooide vlag 1 en in de while-lus:

while (1) { /* GEBRUIKERSCODE END WHILE */ if(voltooid){ if(strcmp(data_full, cmp_) == 0){ HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); } memset(data_full, '\0', strlen(data_full)); klaar = 0; }anders{ _NOP (); } /* GEBRUIKERSCODE BEGIN 3 */ }

Als de voltooide vlag HOOG is, vergelijken we de inhoud van de volledig ontvangen gegevens en de gewenste gegevens en als ze gelijk zijn, schakelen we led. Daarna wissen we de voltooide vlag en wachten we op nieuwe gegevens en wissen we ook de data_full-array om niet naar de array te overschrijven.

Stap 4: Python-softwareontwikkeling

Dus hier willen we ons nummer met '/n' aan het einde sturen, omdat Keil-software het moet zien om het einde te weten.

serieel importeren

ser = serial. Serial('COM17') #check die poort op uw apparaat vanuit Apparaatbeheer

ser.write(b'24\n')

Je zou moeten zien dat de LED omschakelt elke keer dat je '24\n' verzendt. Als u iets anders verzendt, zou dit geen invloed moeten hebben.

Stap 5: Conclusie

We zijn aan het einde van de tutorial gekomen. als je een probleem of vraag hebt, aarzel dan niet om te vragen. Ik zal proberen zoveel mogelijk te helpen. Hartelijk bedankt:)

Aanbevolen: