Obsah:

Deska zjišťování STM32F4 a komunikace Python USART (STM32CubeMx): 5 kroků
Deska zjišťování STM32F4 a komunikace Python USART (STM32CubeMx): 5 kroků

Video: Deska zjišťování STM32F4 a komunikace Python USART (STM32CubeMx): 5 kroků

Video: Deska zjišťování STM32F4 a komunikace Python USART (STM32CubeMx): 5 kroků
Video: Arduino Nano a GY-521 MPU6050 3osý Gyroskop, 3osý akcelerometr a DMP 2024, Červenec
Anonim
Deska zjišťování STM32F4 a komunikace Python USART (STM32CubeMx)
Deska zjišťování STM32F4 a komunikace Python USART (STM32CubeMx)
Deska STM32F4 Discovery Board a Python USART Communication (STM32CubeMx)
Deska STM32F4 Discovery Board a Python USART Communication (STM32CubeMx)

Ahoj! V tomto tutoriálu se pokusíme navázat komunikaci USART mezi STM32F4 ARM MCU a Pythonem (lze jej nahradit jakýmkoli jiným jazykem). Takže začneme:)

Krok 1: Požadavky na software a hardware

Co se týče hardwaru, potřebujete:

  • Deska zjišťování STM32F4 (nebo jakákoli jiná deska STM32)
  • Převodník USB na TTL

Pokud jde o software:

  • STM32CubeMX
  • Keil uVision5
  • Python s nainstalovanou sériovou knihovnou

Krok 2: Konfigurace STM32CubeMX

Nejprve pochopme, co chceme dělat. Chceme přenášet data na palubu z Pythonu přes USART a zkontrolovat, zda máme správná data a přepínat LED. Potřebujeme tedy povolit USART a Led.

  • Povolte USART2 na kartě Připojení.

    • Změňte režim na Asynchoronous
    • Přenosová rychlost až 9600 bitů/s
    • Délka slova do 8 bitů bez parity
    • Žádná parita
    • Z nastavení DMA přidejte USART2_RX v cyklickém režimu
    • Z nastavení NVIC povolte globální přerušení USART2
  • LED aktivujte kliknutím na PD12

Pak vygenerujte kód:)

Krok 3: Vývoj softwaru Keil

#zahrnout

#zahrnout

Tyto knihovny budou potřeba v řetězcových operacích a k definování logické proměnné.

/ *KÓD UŽIVATELE ZAČÍNÁ 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KÓD UŽIVATELE KONEC 2 */

Zde začal příjem UART s DMA.

/ *UŽIVATELSKÝ KÓD ZAČÍNÁ 4 */neplatné HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Zabraňte nepoužitým varováním při kompilaci */NEPOUŽITÉ (huart); / * POZNÁMKA: Tato funkce by neměla být upravována, pokud je potřeba zpětné volání, HAL_UART_RxCpltCallback lze implementovat do uživatelského souboru */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; index _ ++; } else {index_ = 0; skončil = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * KÓD UŽIVATELE KONEC 4 * /

Toto je ISR, který se aktivuje, když získáme jeden bajt znaku. Tak. získáme ten bajt a zapíšeme jej do data_full, který obsahuje všechna přijatá data, dokud nedostaneme '\ n'. Když dostaneme '\ n', vytvoříme hotový příznak 1 a smyč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ŽIVATELE ZAČÍNÁ 3 * /}

Pokud je hotový příznak VYSOKÝ, porovnáme obsah plně přijatých dat a požadovaných dat a pokud jsou stejné, přepneme LED. Poté vymažeme hotový příznak a počkáme na nová data a také vymažeme pole data_full, aby nedošlo k přepsání do pole.

Krok 4: Vývoj softwaru Python

Zde tedy chceme poslat naše číslo s '/n' na konci, protože software Keil to bude muset vidět, aby poznal konec.

importní seriál

ser = serial. Serial ('COM17') #zkontrolujte tento port ve vašem zařízení ve Správci zařízení

ser.write (b'24 / n ')

Měli byste vidět, že se LED přepíná pokaždé, když odešlete '24 / n '. Pokud pošlete cokoli jiného, nemělo by to mít vliv.

Krok 5: Závěr

Došli jsme na konec tutoriálu. pokud máte nějaký problém nebo otázku, neváhejte se zeptat. Budu se snažit pomáhat, jak budu moci. Děkuji mnohokrát:)

Doporučuje: