Taula de continguts:

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

Vídeo: STM32F4 Discovery Board i Python USART Communication (STM32CubeMx): 5 passos

Vídeo: STM32F4 Discovery Board i Python USART Communication (STM32CubeMx): 5 passos
Vídeo: 8 STM32F7 Discovery Board UART Code generation using STM32CubeMx 2024, Juliol
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)

Hola! En aquest tutorial intentarem establir la comunicació USART entre STM32F4 ARM MCU i Python (es pot substituir per qualsevol altre idioma). Comencem, doncs,:)

Pas 1: requisits de programari i maquinari

Pel que fa al maquinari, necessiteu:

  • STM32F4 Discovery Board (o qualsevol altra placa STM32)
  • Convertidor USB a TTL

Pel que fa al programari:

  • STM32CubeMX
  • Keil uVision5
  • Python amb la biblioteca en sèrie instal·lada

Pas 2: Configuració de STM32CubeMX

Primer entenem què volem fer. Volem transmetre dades al tauler des de Python mitjançant USART i comprovar si tenim dades correctes i canviar el led. Per tant, necessitem habilitar USART i Led.

  • Activeu USART2 des de la pestanya Connectivitat.

    • Canvieu el mode a Asincrònic
    • Velocitat de transmissió a 9600 bits / s
    • La longitud de la paraula és de 8 bits sense paritat
    • Cap bit de paritat
    • Des de la configuració de DMA, afegiu USART2_RX en mode cicular
    • Des de la configuració NVIC, activeu la interrupció global USART2
  • Activeu el LED fent clic a PD12

A continuació, genera codi:)

Pas 3: desenvolupament de programari Keil

#incloure

#incloure

Aquestes biblioteques seran necessàries en les operacions de cadena i per definir la variable booleana.

/ * CODI D'USUARI COMENÇA 2 * / HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * FINAL DEL CODI D'USUARI 2 * /

Aquí s’inicia la recepció d’UART amb DMA.

/ * CODI DE L’USUARI COMENÇA 4 * / void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart) {/ * Evita l’avís de compilació d’arguments no utilitzats * / UNUSED (huart); / * NOTA: Aquesta funció no s'hauria de modificar, quan es necessiti la devolució de trucada, es podria implementar HAL_UART_RxCpltCallback al fitxer d'usuari * / if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; índex _ ++; } else {index_ = 0; acabat = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * CODI D'USUARI FINAL 4 * /

Es tracta d’ISR que s’activa quan obtenim un byte de caràcter. Tan. obtenim aquest byte i l'escrivim al data_full que conté les dades rebudes completes fins que obtinguem '\ n'. Quan obtenim '\ n', acabem el senyal 1 i el bucle while:

while (1) {/ * CODI D'USUARI FINALITJA MENTRE * / if (acabat) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); acabat = 0; } else {_NOP (); } / * CODI D'USUARI COMENÇA 3 * /}

Si la marca acabada és ALTA, comparem el contingut de les dades rebudes completes i les dades que desitgem i, si són iguals, canviarem el led. Després d'això, esborrem el senyalador acabat i esperem noves dades i també esborrem la matriu data_full per no sobreescriure-la.

Pas 4: desenvolupament de programari Python

Per tant, aquí volem enviar el nostre número amb '/ n' al final, perquè el programari de Keil haurà de veure-ho per conèixer el final.

importació de sèries

ser = serial. Serial ('COM17') # comproveu aquest port al dispositiu des del Gestor de dispositius

ser.write (b'24 / n ')

Hauríeu de veure que el LED commuta cada vegada que envieu "24 / n". Si envieu qualsevol altra cosa, no hauria d’afectar-la.

Pas 5: Conclusió

Hem arribat al final del tutorial. si teniu algun problema o pregunta, no dubteu a fer-ho. Intentaré ajudar tot el que pugui. Moltes gràcies:)

Recomanat: