Sisukord:

STM32F4 avastuslaud ja Python USART side (STM32CubeMx): 5 sammu
STM32F4 avastuslaud ja Python USART side (STM32CubeMx): 5 sammu

Video: STM32F4 avastuslaud ja Python USART side (STM32CubeMx): 5 sammu

Video: STM32F4 avastuslaud ja Python USART side (STM32CubeMx): 5 sammu
Video: STM32 #0. Начало. Краткий обзор рабочей отладочной платы курса по HAL - STM32F4-DISC1 2024, Juuli
Anonim
STM32F4 avastuslaud ja Python USART kommunikatsioon (STM32CubeMx)
STM32F4 avastuslaud ja Python USART kommunikatsioon (STM32CubeMx)
STM32F4 avastuslaud ja Python USART kommunikatsioon (STM32CubeMx)
STM32F4 avastuslaud ja Python USART kommunikatsioon (STM32CubeMx)

Tere! Selles õpetuses proovime luua USART -suhtluse STM32F4 ARM MCU ja Pythoni vahel (selle saab asendada mis tahes muu keelega). Niisiis, alustame:)

1. samm: tarkvara ja riistvara nõuded

Riistvara osas on teil vaja:

  • STM32F4 avastuslaud (või mõni muu STM32 plaat)
  • USB -TTL muundur

Tarkvara osas:

  • STM32CubeMX
  • Keil uVision5
  • Python koos jadakoguga

Samm: STM32CubeMX seadistamine

Kõigepealt mõistame, mida me teha tahame. Tahame edastada andmed tahvlile Pythonist USART -i kaudu ja kontrollida, kas meil on õiged andmed ja lülitusdiood. Seega peame lubama USART ja Led.

  • Luba USART2 vahekaardil Ühenduvus.

    • Muutke režiim asünkroonseks
    • Baudikiirus kuni 9600 bitti/s
    • Sõna pikkus kuni 8 bitti ilma pariteedita
    • Ilma pariteedita
    • Lisage DMA seadetest tsikulaarrežiimis USART2_RX
    • NVIC -seadetest lubage USART2 globaalne katkestus
  • Lülitage LED sisse, klõpsates nuppu PD12

Siis genereeri kood:)

3. samm: tarkvara arendamine

#kaasake

#kaasake

Neid teeke on vaja stringioperatsioonides ja loogilise muutuja määratlemiseks.

/ *KASUTAJAKOOD ALGAS 2 */ HAL_UART_Recept_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KASUTAJAKOOD LÕPP 2 */

Siin algas UART -vastuvõtt DMA -ga.

/ *KASUTAJAKOOD ALGAS 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Ennetage kasutamata argumentide koostamise hoiatus */UNUSED (huart); / * MÄRKUS. Seda funktsiooni ei tohiks muuta, kui on vaja tagasihelistamist, saab rakenduse HAL_UART_RxCpltCallback rakendada kasutajafaili */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } muu {indeks_ = 0; valmis = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * KASUTAJAKOOD LÕPP 4 * /

See on ISR, mis aktiveeritakse, kui saame ühe baidi tähemärki. Niisiis. saame selle baidi ja kirjutame selle andmete_täiele, mis sisaldab kõiki vastuvõetud andmeid, kuni saame '\ n'. Kui saame '\ n', teeme valmis lipu 1 ja in loop:

samas (1) { / * KASUTAJAKOOD LÕPPEVAD * / kui (lõpetatud) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); valmis = 0; } muu {_NOP (); } / * KASUTAJAKOOD ALGAS 3 * /}

Kui valmis lipp on HIGH, võrdleme vastuvõetud andmete ja soovitud andmete sisu ning kui need on võrdsed, lülitame LED -i sisse. Pärast seda kustutame lõpetatud lipu ja ootame uusi andmeid ning tühjendame ka massiivi data_full, et mitte massiivi üle kirjutada.

Samm 4: Pythoni tarkvaraarendus

Niisiis, siin tahame saata oma numbri lõpus tähisega '/n', sest Keili tarkvara peab seda nägema, et lõppu teada saada.

impordi seeria

ser = jada. Seriaalne ('COM17') #kontrollige seadmehalduris seda pordi oma seadmes

ser.write (b'24 / n ')

Peaksite nägema, et LED lülitub sisse iga kord, kui saadate '24 / n '. Kui saadate midagi muud, ei tohiks see seda mõjutada.

5. samm: järeldus

Oleme jõudnud õpetuse lõppu. kui teil on probleeme või küsimusi, ärge kartke küsida. Püüan aidata nii palju kui saan. Tänan teid väga:)

Soovitan: