Tartalomjegyzék:

STM32F4 Discovery Board és Python USART kommunikáció (STM32CubeMx): 5 lépés
STM32F4 Discovery Board és Python USART kommunikáció (STM32CubeMx): 5 lépés

Videó: STM32F4 Discovery Board és Python USART kommunikáció (STM32CubeMx): 5 lépés

Videó: STM32F4 Discovery Board és Python USART kommunikáció (STM32CubeMx): 5 lépés
Videó: 8 STM32F7 Discovery Board UART Code generation using STM32CubeMx 2024, Július
Anonim
STM32F4 Discovery Board és Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board és Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board és Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board és Python USART Communication (STM32CubeMx)

Szia! Ebben az oktatóanyagban USART kommunikációt próbálunk létrehozni az STM32F4 ARM MCU és a Python között (bármely más nyelvvel helyettesíthető). Szóval kezdjük:)

1. lépés: Szoftver- és hardverkövetelmények

A hardver szempontjából a következőkre van szüksége:

  • STM32F4 Discovery Board (vagy bármely más STM32 kártya)
  • USB -TTL átalakító

A szoftver szempontjából:

  • STM32CubeMX
  • Keil uVision5
  • Python soros könyvtárral telepítve

2. lépés: STM32CubeMX konfiguráció

Először is értsük meg, mit akarunk tenni. Szeretnénk adatokat továbbítani a fedélzetre a Python -ból az USART -on keresztül, és ellenőrizni, hogy helyesek -e az adatok és a váltó led. Tehát engedélyeznünk kell az USART és a Led funkciót.

  • A USART2 engedélyezése a Kapcsolódás lapon.

    • Módosítsa az aszinkron módot
    • Baud sebessége 9600 bit/s
    • A szó hossza 8 bitre paritás nélkül
    • Nincs paritás bit
    • A DMA beállításokból adjon hozzá USART2_RX ciklikus módban
    • Az NVIC beállításokból engedélyezze a USART2 globális megszakítást
  • A LED engedélyezéséhez kattintson a PD12 gombra

Akkor generálj kódot:)

3. lépés: Keil szoftverfejlesztés

#befoglalni

#befoglalni

Ezekre a könyvtárakra lesz szükség a karakterlánc -műveletekben és a logikai változó meghatározásához.

/ *FELHASZNÁLÓI KÓD BEGIN 2 */ HAL_UART_Recep_DMA (& huart2, (uint8_t *) data_buffer, 1); / * FELHASZNÁLÓI KÓD VÉGE 2 */

Itt elindult az UART -vétel DMA -val.

/ *FELHASZNÁLÓI KÓD 4 BEGIN * */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Megakadályozza a nem használt argumentum (ok) összeállítási figyelmeztetést */UNUSED (huart); / * MEGJEGYZÉS: Ezt a funkciót nem szabad módosítani, ha visszahívásra van szükség, a HAL_UART_RxCpltCallback megvalósítható a felhasználói fájlban */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; index _ ++; } else {index_ = 0; kész = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * FELHASZNÁLÓI KÓD VÉGE 4 * /

Ez az ISR, amely akkor aktiválódik, amikor egy bájt karaktert kapunk. Így. megkapjuk azt a bájtot, és beírjuk a data_full -ba, amely a teljes fogadott adatot tartalmazza, amíg meg nem kapjuk a "\ n" -t. Amikor megkapjuk a „\ n” értéket, elkészítjük az 1 -es és a bekapcsolt zászlót:

while (1) { / * FELHASZNÁLÓI KÓD VÉGE VÉGRE * / ha (kész) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); kész = 0; } else {_NOP (); } / * A FELHASZNÁLÓI KÓD BEGIN 3 * /}

Ha a kész jelző MAGAS, összehasonlítjuk a teljes fogadott adatok és a kívánt adatok tartalmát, és ha egyenlők, akkor váltjuk a ledet. Ezt követően töröljük a kész zászlót, és várjuk az új adatokat, és töröljük a data_full tömböt is, nehogy felülírjuk a tömböt.

4. lépés: Python szoftverfejlesztés

Tehát itt szeretnénk elküldeni a számunkat a '/n' karakterrel a végén, mert a Keil szoftvernek látnia kell, hogy megtudja a végét.

sorozat importálása

ser = serial. Serial ('COM17') #ellenőrizze az eszköz portját az Eszközkezelőben

ser.write (b'24 / n ')

Látnia kell, hogy a LED minden alkalommal vált, amikor elküldi a '24 / n 'értéket. Ha mást küld, az nem befolyásolhatja.

5. lépés: Következtetés

Az oktatóanyag végéhez értünk. ha bármilyen problémája vagy kérdése van, ne habozzon feltenni. Igyekszem segíteni, amennyire csak tudok. Nagyon szépen köszönjük:)

Ajánlott: