Inhoudsopgave:
- Stap 1: Software- en hardwarevereisten
- Stap 2: STM32CubeMX-configuratie
- Stap 3: Keil-softwareontwikkeling
- Stap 4: Python-softwareontwikkeling
- Stap 5: Conclusie
Video: STM32F4 Discovery Board en Python USART-communicatie (STM32CubeMx): 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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:
FreeRTOS vanaf het begin instellen op STM32F407 Discovery Kit: 14 stappen
FreeRTOS vanaf het begin instellen op STM32F407 Discovery Kit: FreeRTOS kiezen als een realtime besturingssysteem voor uw embedded project is een goede keuze. De FreeRTOS is echt gratis en biedt veel eenvoudige en effectieve RTOS-functies. Maar freeRTOS helemaal opnieuw instellen kan moeilijk zijn, of ik kan zeggen een bi
STM32CubeMx-microfoon (STM32F407VG): 5 stappen
STM32CubeMx-microfoon (STM32F407VG): Hallo! In dit project zullen we proberen geluid te krijgen door een microfoon te gebruiken (externe niet ingebouwde microfoon) en dit via de luidspreker af te spelen. Deze tutorial zal erg kort zijn omdat ik uitleg zal geven over projectonderdelen aan de hand van enkele video's. Dus laten we springen
Servodriver-board met Python-GUI en Arduino: 5 stappen
Servodriver-Board Met Python-GUI en Arduino: Bij het maken van prototypes of het bouwen van modelvliegtuigen kom je vaak het probleem tegen, dat je de servobeweging moet controleren of servo's in de middenpositie moet zetten. Voor het geval je niet wilt opbouwen je hele RC-systeem of test, hoe ver kun je de
DIY ECG met behulp van een Analog Discovery 2 en LabVIEW: 8 stappen
DIY ECG met behulp van een Analog Discovery 2 en LabVIEW: In deze Instructable laat ik je zien hoe je een zelfgemaakte elektrocardiograaf (ECG) maakt. Het doel van deze machine is het versterken, meten en registreren van het natuurlijke elektrische potentieel dat door het hart wordt gecreëerd. Een ECG kan een schat aan informatie onthullen over
Het voorwiel van een Roomba Discovery schoonmaken: 12 stappen
Het voorwiel van een Roomba Discovery schoonmaken: De voorwielen van Roomba Discoveries verzamelen haar en stoppen uiteindelijk met draaien. Dit heeft ongetwijfeld invloed op de prestaties, met name de reinigingstijd vóór het opladen, maar nog belangrijker, het stoort me echt wanneer een robot niet op zijn hoogtepunt werkt.Haar