INHOUDSOPGAWE:

STM32F4 Discovery Board en Python USART Communication (STM32CubeMx): 5 stappe
STM32F4 Discovery Board en Python USART Communication (STM32CubeMx): 5 stappe

Video: STM32F4 Discovery Board en Python USART Communication (STM32CubeMx): 5 stappe

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

Hi! In hierdie handleiding sal ons probeer om USART -kommunikasie tussen STM32F4 ARM MCU en Python tot stand te bring (dit kan deur enige ander taal vervang word). So, kom ons begin:)

Stap 1: Vereistes vir sagteware en hardeware

Wat hardeware betref, benodig u:

  • STM32F4 Discovery Board (of enige ander STM32 -bord)
  • USB na TTL omskakelaar

Wat sagteware betref:

  • STM32CubeMX
  • Keil uVision5
  • Python met seriële biblioteek geïnstalleer

Stap 2: STM32CubeMX -opset

Laat ons eers verstaan wat ons wil doen. Ons wil data vanaf Python via USART na Perdon stuur en kyk of ons die korrekte data het en die skakelaar verander. Ons moet dus USART en Led aktiveer.

  • Aktiveer USART2 vanaf die oortjie Verbindings.

    • Verander die modus na Asynchoronous
    • Baud tempo tot 9600 Bits/s
    • Woordlengte tot 8 bits sonder pariteit
    • Geen bietjie gelykheid nie
    • Voeg vanuit die DMA -instellings USART2_RX in die spesifieke modus
    • Aktiveer die globale onderbreking van USART2 vanaf NVIC -instellings
  • Aktiveer LED deur op PD12 te klik

Genereer dan kode:)

Stap 3: Keil sagteware -ontwikkeling

#insluit

#insluit

Hierdie biblioteke sal nodig wees in stringbewerkings en om Booleaanse veranderlike te definieer.

/ *GEBRUIKERSKODE BEGIN 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * GEBRUIKERSKODE EINDE 2 */

Hier word UART ontvang met DMA begin.

/ *GEBRUIKERSKODE BEGIN 4 */leegte HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Voorkom ongebruikte argument (e) samestellingswaarskuwing */ONGEBRUIK (huart); / * OPMERKING: Hierdie funksie moet nie gewysig word nie, as die terugbel nodig is, kan die HAL_UART_RxCpltCallback in die gebruikerslêer geïmplementeer word */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } anders {index_ = 0; klaar = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * GEBRUIKERSKODE EINDE 4 * /

Dit is ISR wat geaktiveer word as ons een greep karakter kry. So. ons kry die byte en skryf dit aan die data_full wat die volledige data bevat totdat ons '\ n' kry. As ons '\ n' kry, maak ons klaar vlag 1 en in terwyl lus:

terwyl (1) { / * GEBRUIKERSKODE EINDE TERWYL * / as (klaar) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); klaar = 0; } anders {_NOP (); } / * GEBRUIKERSKODE BEGIN 3 * /}

As die voltooide vlag HOOG is, vergelyk ons die inhoud van die volledige ontvangde data en die data wat ons verlang, en as dit gelyk is, skakel ons gelei. Daarna maak ons die voltooide vlag skoon en wag ons vir nuwe data en maak ons ook die data_full skikking skoon om nie na die skikking oor te skryf nie.

Stap 4: Python sagteware -ontwikkeling

Dus, hier wil ons ons nommer met '/n' aan die einde stuur, want Keil -sagteware sal dit moet sien om die einde te ken.

invoer reeks

ser = serial. Serial ('COM17') #kontroleer die poort op u toestel via Toestelbestuurder

ser.write (b'24 / n ')

U moet sien dat die LED elke keer as u '24 / n 'stuur, wissel. As u iets anders stuur, moet dit dit nie beïnvloed nie.

Stap 5: Gevolgtrekking

Ons het die einde van die tutoriaal bereik. as u 'n probleem of vraag het, moet asseblief nie huiwer om dit te vra nie. Ek sal probeer om soveel as moontlik te help. Baie dankie:)

Aanbeveel: