Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08
Živjo! V tem vodiču bomo poskušali vzpostaviti USART komunikacijo med STM32F4 ARM MCU in Pythonom (lahko ga nadomestimo s katerim koli drugim jezikom). Pa začnimo:)
1. korak: Zahteve glede programske in strojne opreme
Kar zadeva strojno opremo, potrebujete:
- STM32F4 Discovery Board (ali katera koli druga plošča STM32)
- Pretvornik USB v TTL
Kar zadeva programsko opremo:
- STM32CubeMX
- Keil uVision5
- Python z nameščeno serijsko knjižnico
2. korak: Konfiguracija STM32CubeMX
Najprej razumejmo, kaj želimo narediti. Želimo posredovati podatke na ploščo s Pythona prek USART in preveriti, ali imamo pravilne podatke, ter preklopiti LED. Torej moramo omogočiti USART in Led.
-
Omogočite USART2 na zavihku Povezovanje.
- Spremenite način v Asynchoronous
- Hitrost prenosa do 9600 bitov/s
- Dolžina besede do 8 bitov brez parnosti
- Brez paritete
- V nastavitvah DMA dodajte USART2_RX v posebnem načinu
- V nastavitvah NVIC omogočite globalno prekinitev USART2
- Omogočite LED s klikom na PD12
Nato ustvarite kodo:)
3. korak: razvoj programske opreme Keil
#vključi
#vključi
Te knjižnice bodo potrebne pri niznih operacijah in za definiranje logične spremenljivke.
/ *KODA UPORABNIKA SE ZAČNE 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KOD UPORABNIKA 2 */
Tu se je začelo sprejemanje UART z DMA.
/ *KODA UPORABNIKA SE ZAČNE 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Prepreči opozorilo pri sestavljanju neuporabljenih argumentov */UNUSED (huart); / * OPOMBA: Te funkcije ne bi smeli spreminjati, kadar je potreben povratni klic, bi lahko HAL_UART_RxCpltCallback izvedli v uporabniški datoteki */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } else {index_ = 0; končano = 1; } // HAL_UART_Prenesite (& huart2, podatkovni vmesni pomnilnik, 1, 10); } / * KOD UPORABNIKA KONEC 4 * /
To je ISR, ki se aktivira, ko dobimo en bajt znaka. Torej. dobimo ta bajt in ga zapišemo v data_full, ki vsebuje celotne prejete podatke, dokler ne dobimo '\ n'. Ko dobimo '\ n' naredimo končano zastavico 1 in v zanki while:
medtem ko (1) { / * KODA UPORABNIKA ZAVRŠI KAJ * / if (končano) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); končano = 0; } else {_NOP (); } / * KODA UPORABNIKA SE ZAČNE 3 * /}
Če je zastavica VELIKA, primerjamo vsebino celotnih prejetih podatkov in podatkov, ki jih želimo, in če so enaki, preklopimo led. Po tem počistimo zastavico končano in počakamo na nove podatke ter počistimo tudi matriko data_full, da je ne prepišemo v matriko.
4. korak: Razvoj programske opreme Python
Torej, tukaj želimo poslati svojo številko z '/n' na koncu, ker jo bo morala programska oprema Keil videti, da bo spoznala konec.
uvozi serijsko
ser = serial. Serial ('COM17') #preverite ta vrata na vaši napravi iz Upravitelja naprav
ser.write (b'24 / n ')
Videti morate, da se LED -lučka preklopi vsakič, ko pošljete '24 / n '. Če pošljete kaj drugega, to ne bi smelo vplivati.
5. korak: Zaključek
Prišli smo do konca vadnice. če imate kakršne koli težave ali vprašanja, ne oklevajte in vprašajte. Poskušal bom pomagati, kolikor bom lahko. Najlepša hvala:)
Priporočena:
STM32CubeMx mikrofon (STM32F407VG): 5 korakov
STM32CubeMx mikrofon (STM32F407VG): Živjo! V tem projektu bomo poskušali dobiti zvok z uporabo mikrofona (zunanji mikrofon, ki ni vgrajen) in ga predvajati skozi zvočnik. Ta vadnica bo zelo kratka, saj bom razložil dele projektov glede na nekatere videoposnetke. Pa skočimo
STM32L100 Utripajoča LED z uporabo Atollic TrueSTUDIO in STM32CubeMX: 5 korakov
STM32L100 Utripajoča LED z uporabo Atollic TrueSTUDIO in STM32CubeMX: V tem projektu vam bom povedal, kako utripati LED z odkrivanjem 32L100. Tako vam bom tukaj povedal o načelu delovanja te vadnice, ki vodi do utripanja, in kakšno programsko in strojno opremo potrebujete
UCL -Embedded -Relay Communication Box: 5 korakov
UCL -Embedded -Relay Communication Box: Glavna ideja tega projekta je krmiljenje niza dveh relejev in senzorja DHT11 z aplikacijo Blynk z uporabo komunikacije WiFi in mikrokrmilnika Nodmcu esp8266
Nadzor hitrosti enosmernega motorja z algoritmom PID (STM32F4): 8 korakov (s slikami)
Nadzor hitrosti enosmernega motorja z uporabo algoritma PID (STM32F4): pozdravljeni vsi, to je tahir ul haq z drugim projektom. Tokrat je to STM32F407 kot MC. To je konec projekta sredi semestra. Upam, da vam je všeč. Potrebuje veliko konceptov in teorije, zato se najprej lotimo tega. S prihodom računalnikov in
Kako očistiti sprednje kolo Roomba Discovery: 12 korakov
Kako očistiti sprednje kolo Roomba Discoveryja: Sprednja kolesa Roomba Discoveries zbirajo dlake in se sčasoma nehajo obračati. To nedvomno vpliva na zmogljivost, zlasti na čas čiščenja pred polnjenjem, še pomembneje pa je, da me res moti, ko robot ne deluje na svojem vrhuncu