Cuprins:

STM32F4 Discovery Board și Python USART Communication (STM32CubeMx): 5 pași
STM32F4 Discovery Board și Python USART Communication (STM32CubeMx): 5 pași

Video: STM32F4 Discovery Board și Python USART Communication (STM32CubeMx): 5 pași

Video: STM32F4 Discovery Board și Python USART Communication (STM32CubeMx): 5 pași
Video: STM32F4 Discovery board - Keil 5 IDE with CubeMX: Tutorial 35 - MPU6050 IMU Module 2024, Iulie
Anonim
STM32F4 Discovery Board și Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board și Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board și Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board și Python USART Communication (STM32CubeMx)

Salut! În acest tutorial vom încerca să stabilim comunicarea USART între STM32F4 ARM MCU și Python (poate fi înlocuită cu orice altă limbă). Deci sa începem:)

Pasul 1: Cerințe software și hardware

În ceea ce privește hardware-ul, aveți nevoie:

  • STM32F4 Discovery Board (sau orice altă placă STM32)
  • Convertor USB la TTL

În ceea ce privește software-ul:

  • STM32CubeMX
  • Keil uVision5
  • Python cu bibliotecă serială instalată

Pasul 2: Configurare STM32CubeMX

Mai întâi să înțelegem ce vrem să facem. Vrem să transmitem date la bord de la Python prin USART și să verificăm dacă avem date corecte și comutăm led. Deci, trebuie să activăm USART și Led.

  • Activați USART2 din fila Conectivitate.

    • Schimbați modul în Asincron
    • Rată de transmisie la 9600 biți / s
    • Lungimea cuvântului la 8 biți fără paritate
    • Niciun bit de paritate
    • Din setările DMA adăugați USART2_RX în modul cicular
    • Din setările NVIC activați întreruperea globală USART2
  • Activați LED-ul făcând clic pe PD12

Apoi generează cod:)

Pasul 3: Dezvoltarea software-ului Keil

#include

#include

Aceste biblioteci vor fi necesare în operațiile de șir și pentru a defini variabila booleană.

/ * COD DE UTILIZATOR ÎNCEPE 2 * / HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * CODUL UTILIZATORULUI 2 * /

Aici a început primirea UART cu DMA.

/ * COD DE UTILIZATOR ÎNCEPE 4 * / void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart) {/ * Prevenirea avertismentului de compilare a argumentelor neutilizate * / UNUSED (huart); / * NOTĂ: Această funcție nu trebuie modificată, atunci când este nevoie de apel invers, HAL_UART_RxCpltCallback ar putea fi implementat în fișierul utilizatorului * / if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; index _ ++; } else {index_ = 0; terminat = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * CODUL UTILIZATORULUI 4 * /

Acesta este ISR care este activat când obținem un octet de caracter. Asa de. obținem acel octet și îl scriem în data_full care conține datele complete primite până obținem „\ n”. Când obținem „\ n” facem steagul terminat 1 și în bucla while:

while (1) {/ * CODUL UTILIZATORULUI ÎNCHEIE CÂND * / if (terminat) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); terminat = 0; } else {_NOP (); } / * COD DE UTILIZATOR ÎNCEPE 3 * /}

Dacă steagul terminat este HIGH, comparăm conținutul datelor complete primite și a datelor pe care le dorim și dacă sunt egale, comutăm ledul. După aceea, ștergem semnalul terminat și așteptăm date noi și, de asemenea, ștergem matricea data_full pentru a nu suprascrie matricea.

Pasul 4: Dezvoltare software Python

Deci, aici vrem să trimitem numărul nostru cu „/ n” la final, deoarece software-ul Keil va trebui să îl vadă pentru a cunoaște sfârșitul.

import serial

ser = serial. Serial ('COM17') #bifați acel port de pe dispozitiv din Manager dispozitive

ser.write (b'24 / n ')

Ar trebui să vedeți că LED-ul comută de fiecare dată când trimiteți „24 / n”. Dacă trimiteți altceva, nu ar trebui să îl afecteze.

Pasul 5: Concluzie

Am ajuns la sfârșitul tutorialului. dacă aveți vreo problemă sau întrebare, vă rugăm să nu ezitați să întrebați. Voi încerca să ajut cât pot. Mulțumesc foarte mult:)

Recomandat: