Innholdsfortegnelse:

STM32F4 Discovery Board og Python USART Communication (STM32CubeMx): 5 trinn
STM32F4 Discovery Board og Python USART Communication (STM32CubeMx): 5 trinn

Video: STM32F4 Discovery Board og Python USART Communication (STM32CubeMx): 5 trinn

Video: STM32F4 Discovery Board og Python USART Communication (STM32CubeMx): 5 trinn
Video: STM32F4 Discovery board - Keil 5 IDE with CubeMX: Tutorial 8 UART - Updated Dec 2017 2024, Juli
Anonim
STM32F4 Discovery Board og Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board og Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board og Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board og Python USART Communication (STM32CubeMx)

Hei! I denne opplæringen vil vi prøve å etablere USART -kommunikasjon mellom STM32F4 ARM MCU og Python (den kan erstattes av et hvilket som helst annet språk). Så la oss komme i gang:)

Trinn 1: Krav til programvare og maskinvare

Når det gjelder maskinvare trenger du:

  • STM32F4 Discovery Board (eller et annet STM32 -kort)
  • USB til TTL -omformer

Når det gjelder programvare:

  • STM32CubeMX
  • Keil uVision5
  • Python med seriell bibliotek installert

Trinn 2: STM32CubeMX -konfigurasjon

La oss først forstå hva vi vil gjøre. Vi ønsker å overføre data til bord fra Python over USART og sjekke om vi har riktige data og veksellys. Så vi må aktivere USART og Led.

  • Aktiver USART2 fra kategorien Tilkobling.

    • Bytt modus til asynkron
    • Overføringshastighet til 9600 bits/s
    • Ordlengde til 8 bits uten paritet
    • Ingen likhet
    • Fra DMA -innstillingene legger du til USART2_RX i cicular -modus
    • Fra NVIC -innstillinger aktiverer USART2 global avbrudd
  • Aktiver LED ved å klikke på PD12

Generer deretter kode:)

Trinn 3: Programvareutvikling av Keil

#inkludere

#inkludere

Disse bibliotekene vil være nødvendige i strengoperasjoner og for å definere boolsk variabel.

/ *USER CODE BEGIN 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * BRUKERKODE SLUT 2 */

Her startet UART -mottak med DMA.

/ *BRUKERKODE BEGYNNER 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Forhindre ubrukte argument (er) om samlingsvarsel */UBRUKT (huart); / * MERK: Denne funksjonen bør ikke endres. Når tilbakeringing er nødvendig, kan HAL_UART_RxCpltCallback implementeres i brukerfilen */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } annet {index_ = 0; ferdig = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * BRUKERKODE SLUTT 4 * /

Dette er ISR som aktiveres når vi får en byte karakter. Så. vi får den byten og skriver den til data_full som inneholder alle mottatte data til vi får '\ n'. Når vi får '\ n' lager vi ferdig flagg 1 og i mens loop:

mens (1) { / * BRUKERKODE END WHILE * / if (ferdig) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); ferdig = 0; } annet {_NOP (); } / * BRUKERKODE BEGYNNER 3 * /}

Hvis ferdig flagg er HØY, sammenligner vi innholdet i full mottatte data og data vi ønsker, og hvis de er like, bytter vi led. Etter det fjerner vi ferdig flagg og venter på nye data og sletter også data_full -arrayet for ikke å overskrive til matrisen.

Trinn 4: Python -programvareutvikling

Så her vil vi sende nummeret vårt med '/n' på slutten, fordi Keil -programvaren må se det for å vite slutten.

importer serie

ser = serial. Serial ('COM17') #sjekk porten på enheten din fra Enhetsbehandling

ser.write (b'24 / n ')

Du bør se at LED -lampen veksler hver gang du sender '24 / n '. Hvis du sender noe annet, bør det ikke påvirke det.

Trinn 5: Konklusjon

Vi har nådd slutten av opplæringen. hvis du har problemer eller spørsmål, ikke nøl med å spørre. Jeg skal prøve å hjelpe så mye jeg kan. Tusen takk:)

Anbefalt: