Obsah:

STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx): 5 krokov
STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx): 5 krokov

Video: STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx): 5 krokov

Video: STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx): 5 krokov
Video: STM32 - программирование для начинающих. Пошагово. CubeMX CubeIDE 2024, November
Anonim
STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx)
STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx)
STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx)
STM32F4 Discovery Board a komunikácia Python USART (STM32CubeMx)

Ahoj! V tomto návode sa pokúsime nadviazať komunikáciu USART medzi STM32F4 ARM MCU a Pythonom (je možné ho nahradiť iným jazykom). Začnime teda:)

Krok 1: Požiadavky na softvér a hardvér

Čo sa týka hardvéru, potrebujete:

  • STM32F4 Discovery Board (alebo akákoľvek iná doska STM32)
  • Konvertor USB na TTL

Pokiaľ ide o softvér:

  • STM32CubeMX
  • Keil uVision5
  • Python s nainštalovanou sériovou knižnicou

Krok 2: Konfigurácia STM32CubeMX

Najprv pochopme, čo chceme robiť. Chceme prenášať údaje na palubu z Pythonu cez USART a kontrolovať, či máme správne údaje a prepínať LED. Preto musíme povoliť USART a Led.

  • Aktivujte USART2 na karte Pripojenie.

    • Zmeňte režim na Asynchoronous
    • Prenosová rýchlosť až 9600 bitov/s
    • Dĺžka slova je 8 bitov bez parity
    • Žiadna parita
    • Z nastavení DMA pridajte USART2_RX v cyklickom režime
    • Z nastavení NVIC povoľte globálne prerušenie USART2
  • LED aktivujte kliknutím na PD12

Potom vygenerujte kód:)

Krok 3: Vývoj softvéru Keil

#zahrnúť

#zahrnúť

Tieto knižnice budú potrebné pri reťazcových operáciách a na definovanie booleovskej premennej.

/ *KÓD UŽÍVATEĽA ZAČÍNA 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KÓD UŽÍVATEĽA KONIEC 2 */

Tu sa začal príjem UART s DMA.

/ *KÓD UŽÍVATEĽA ZAČÍNA 4 */neplatné HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Zabrániť upozorneniu na kompiláciu nepoužitých argumentov */NEPOUŽITÉ (huart); / * POZNÁMKA: Túto funkciu by ste nemali upravovať, keď je potrebné spätné volanie, HAL_UART_RxCpltCallback by bolo možné implementovať do užívateľského súboru */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; index _ ++; } else {index_ = 0; hotové = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * KÓD UŽÍVATEĽA KONIEC 4 * /

Toto je ISR, ktorý sa aktivuje, keď získame jeden bajt znaku. Takže. dostaneme ten bajt a napíšeme ho do súboru data_full, ktorý obsahuje úplné prijaté údaje, kým nezískame '\ n'. Keď dostaneme '\ n', urobíme hotový príznak 1 a slučku while:

while (1) { / * USER CODE END WHILE * / if (finished) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); skončil = 0; } else {_NOP (); } / * KÓD UŽÍVATEĽA ZAČÍNA 3 * /}

Ak je hotový príznak HIGH, porovnáme obsah všetkých prijatých údajov a požadovaných údajov a ak sú rovnaké, prepneme LED. Potom vymažeme príznak ready a počkáme na nové údaje a tiež vymažeme pole data_full, aby sa pole neprepísalo.

Krok 4: Vývoj softvéru Python

Tu teda chceme poslať naše číslo s '/n' na konci, pretože softvér Keil ho bude musieť vidieť, aby poznal koniec.

importný seriál

ser = serial. Serial ('COM17') #skontrolujte tento port na svojom zariadení v Správcovi zariadení

ser.write (b'24 / n ')

Mali by ste vidieť, že LED dióda sa prepína vždy, keď odošlete '24 / n '. Ak pošlete čokoľvek iné, nemalo by to mať vplyv.

Krok 5: Záver

Dostali sme sa na koniec tutoriálu. ak máte akýkoľvek problém alebo otázku, neváhajte sa opýtať. Pokúsim sa pomôcť, ako môžem. Ďakujem mnohokrát:)

Odporúča: