Kazalo:

STM32F4 Discovery Board in Python USART Communication (STM32CubeMx): 5 korakov
STM32F4 Discovery Board in Python USART Communication (STM32CubeMx): 5 korakov

Video: STM32F4 Discovery Board in Python USART Communication (STM32CubeMx): 5 korakov

Video: STM32F4 Discovery Board in Python USART Communication (STM32CubeMx): 5 korakov
Video: STM32F4 Discovery board - Keil 5 IDE with CubeMX: Tutorial 8 UART - Updated Dec 2017 2024, Julij
Anonim
STM32F4 Discovery Board in Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board in Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board in Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board in Python USART Communication (STM32CubeMx)

Ž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: