Sadržaj:

STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx): 5 koraka
STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx): 5 koraka

Video: STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx): 5 koraka

Video: STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx): 5 koraka
Video: 040 - STM32F1 SPI-коммуникация: введение и настройка 2024, Srpanj
Anonim
STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx)
STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx)
STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx)
STM32F4 Discovery Board i Python USART komunikacija (STM32CubeMx)

Bok! U ovom ćemo vodiču pokušati uspostaviti USART komunikaciju između STM32F4 ARM MCU -a i Pythona (može se zamijeniti bilo kojim drugim jezikom). Pa krenimo:)

Korak 1: Softverski i hardverski zahtjevi

Što se tiče hardvera potrebno vam je:

  • STM32F4 ploča za otkrivanje (ili bilo koja druga ploča STM32)
  • USB u TTL pretvarač

Što se tiče softvera:

  • STM32CubeMX
  • Keil uVision5
  • Python s instaliranom serijskom knjižnicom

Korak 2: Konfiguracija STM32CubeMX

Prvo shvatimo što želimo učiniti. Želimo prenijeti podatke na ploču s Pythona preko USART -a i provjeriti imamo li točne podatke i uključiti LED. Dakle, moramo omogućiti USART i Led.

  • Omogućite USART2 na kartici Povezivanje.

    • Promijenite način rada u Asynchoronous
    • Brzina prijenosa do 9600 bita/s
    • Dužina riječi do 8 bitova bez pariteta
    • Bez pariteta
    • Iz postavki DMA -a dodajte USART2_RX u specifičnom načinu rada
    • Iz NVIC postavki omogućite globalni prekid USART2
  • Omogućite LED klikom na PD12

Zatim generirajte kôd:)

Korak 3: Razvoj softvera Keil

#uključi

#uključi

Te će knjižnice biti potrebne u nizovnim operacijama i za definiranje logičke varijable.

/ *KORISNIČKI KOD POČINJE 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KORISNIČKI KOD KRAJ 2 */

Ovdje je primljeno UART s DMA -om.

/ *KORISNIČKI KOD POČINJE 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Spriječi upozorenje kompilacije neiskorištenih argumenata */UNUSED (huart); / * NAPOMENA: Ova funkcija se ne smije mijenjati, kada je potreban povratni poziv, HAL_UART_RxCpltCallback bi se mogao implementirati u korisničku datoteku */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } else {indeks_ = 0; završeno = 1; } // HAL_UART_Prenesite (& huart2, data_buffer, 1, 10); } / * KORISNIČKI KOD KRAJ 4 * /

Ovo je ISR koji se aktivira kada dobijemo jedan bajt znaka. Tako. dobivamo taj bajt i zapisujemo ga u data_full koji sadrži potpune primljene podatke dok ne dobijemo '\ n'. Kad dobijemo '\ n' napravimo gotovu zastavicu 1 i u while petlji:

while (1) { / * KORISNIČKI KOD KRAJ DOK * / if (gotov) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); završeno = 0; } else {_NOP (); } / * KORISNIČKI KOD POČINJE 3 * /}

Ako je gotova zastavica VISOKA, uspoređujemo sadržaj potpunih primljenih podataka i podataka koje želimo, a ako su jednaki, mijenjamo LED. Nakon toga brišemo oznaku gotova i čekamo nove podatke te također brišemo polje data_full kako se ne bi prepisali u polje.

Korak 4: Razvoj softvera Python

Dakle, ovdje želimo poslati naš broj s '/n' na kraju, jer će ga softver Keil morati vidjeti da bi znao kraj.

serijski uvoz

ser = serial. Serial ('COM17') #provjerite taj port na vašem uređaju iz Upravitelja uređaja

ser.write (b'24 / n ')

Trebali biste vidjeti da se LED uključuje svaki put kada pošaljete '24 / n '. Ako pošaljete bilo što drugo, to ne bi trebalo utjecati.

Korak 5: Zaključak

Došli smo do kraja vodiča. ako imate bilo kakvih problema ili pitanja, ne ustručavajte se pitati. Pokušat ću pomoći koliko god mogu. Hvala vam puno:)

Preporučeni: