Indholdsfortegnelse:

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

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

Video: STM32F4 Discovery Board og Python USART Communication (STM32CubeMx): 5 trin
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)

Hej! I denne vejledning vil vi forsøge at etablere USART -kommunikation mellem STM32F4 ARM MCU og Python (den kan erstattes af ethvert andet sprog). Så lad os komme i gang:)

Trin 1: Krav til software og hardware

Med hensyn til hardware har du brug for:

  • STM32F4 Discovery Board (eller ethvert andet STM32 -kort)
  • USB til TTL konverter

Med hensyn til software:

  • STM32CubeMX
  • Keil uVision5
  • Python med serielt bibliotek installeret

Trin 2: STM32CubeMX -konfiguration

Lad os først forstå, hvad vi vil gøre. Vi ønsker at overføre data til board fra Python over USART og kontrollere, om vi har korrekte data og skifte led. Så vi skal aktivere USART og Led.

  • Aktiver USART2 fra fanen Forbindelser.

    • Skift tilstand til asynkron
    • Baudhastighed til 9600 Bits/s
    • Ordlængde til 8 bits uden paritet
    • Ingen paritetsbit
    • Fra DMA -indstillinger tilføj USART2_RX i cicular mode
    • Aktiver USART2 global afbrydelse fra NVIC -indstillinger
  • Aktiver LED ved at klikke på PD12

Så generer kode:)

Trin 3: Softwareudvikling af Keil

#omfatte

#omfatte

Disse biblioteker vil være nødvendige i strengoperationer og for at definere boolsk variabel.

/ *BRUGERKODE BEGYNNER 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * BRUGERKODE SLUT 2 */

Her startede UART -modtagelse med DMA.

/ *BRUGERKODE BEGYNNER 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Forhindrer ubrugte argumenter for kompilering */UBRUGT (huart); / * BEMÆRK: Denne funktion bør ikke ændres, når tilbagekald er nødvendig, kunne HAL_UART_RxCpltCallback implementeres i brugerfilen */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } andet {index_ = 0; færdig = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * BRUGERKODE SLUT 4 * /

Dette er ISR, som aktiveres, når vi får en byte karakter. Så. vi får den byte og skriver den til data_full, som indeholder de fulde modtagne data, indtil vi får '\ n'. Når vi får '\ n' laver vi færdigt flag 1 og in while loop:

mens (1) { / * BRUGERKODE SLUTT MED * / hvis (færdig) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); færdig = 0; } andet {_NOP (); } / * BRUGERKODE BEGYNDER 3 * /}

Hvis færdigt flag er HØJ, sammenligner vi indholdet af fuldt modtagne data og data, vi ønsker, og hvis de er ens, skifter vi led. Derefter rydder vi færdigt flag og venter på nye data og rydder også data_full -arrayet for ikke at overskrive til arrayet.

Trin 4: Python -softwareudvikling

Så her vil vi sende vores nummer med '/n' i slutningen, fordi Keil -software skal se det for at kende slutningen.

import seriel

ser = serial. Serial ('COM17') #tjek den port på din enhed fra Enhedshåndtering

ser.write (b'24 / n ')

Du bør se, at LED'en skifter hver gang du sender '24 / n '. Hvis du sender noget andet, bør det ikke påvirke det.

Trin 5: Konklusion

Vi har nået slutningen af selvstudiet. hvis du har et problem eller spørgsmål, tøv ikke med at spørge. Jeg vil prøve at hjælpe så meget jeg kan. Mange tak:)

Anbefalede: