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, Juli
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)

Zdravo! 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 sa instaliranom serijskom bibliotekom

Korak 2: Konfiguracija STM32CubeMX

Prvo da shvatimo šta želimo da radimo. Želimo prenijeti podatke na ploču s Pythona preko USART -a i provjeriti imamo li ispravne 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
    • Nema pariteta
    • Iz DMA postavki dodajte USART2_RX u specifičnom načinu rada
    • Iz NVIC postavki omogućite USART2 globalni prekid
  • Omogućite LED klikom na PD12

Zatim generirajte kod:)

Korak 3: Razvoj softvera Keil

#include

#include

Ove biblioteke bit će 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 UART prijem započeo 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 {index_ = 0; završeno = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * KORISNIČKI KOD KRAJ 4 * /

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

while (1) { / * KORISNIČKI KOD KRAJ DOK * / if (završeno) {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, a također brišemo polje data_full kako se ne bi prepisali u niz.

Korak 4: Razvoj softvera Python

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

uvoz serijske

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šaću da pomognem koliko mogu. Hvala vam puno:)

Preporučuje se: