Índice:

Placa de descoberta STM32F4 e comunicação Python USART (STM32CubeMx): 5 etapas
Placa de descoberta STM32F4 e comunicação Python USART (STM32CubeMx): 5 etapas

Vídeo: Placa de descoberta STM32F4 e comunicação Python USART (STM32CubeMx): 5 etapas

Vídeo: Placa de descoberta STM32F4 e comunicação Python USART (STM32CubeMx): 5 etapas
Vídeo: STM32 Nucleo Tutorial 4- UART printf Coding in Keil using STM32CubeMx 2024, Julho
Anonim
STM32F4 Discovery Board e Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board e Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board e Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board e Python USART Communication (STM32CubeMx)

Oi! Neste tutorial, tentaremos estabelecer a comunicação USART entre STM32F4 ARM MCU e Python (pode ser substituído por qualquer outra linguagem). Então vamos começar:)

Etapa 1: Requisitos de software e hardware

Em termos de hardware, você precisa de:

  • STM32F4 Discovery Board (ou qualquer outra placa STM32)
  • Conversor de USB para TTL

Em termos de software:

  • STM32CubeMX
  • Keil uVision5
  • Python com biblioteca serial instalada

Etapa 2: Configuração STM32CubeMX

Primeiro, vamos entender o que queremos fazer. Queremos transmitir os dados para a placa do Python sobre o USART e verificar se temos os dados corretos e o led de alternância. Então, precisamos habilitar USART e Led.

  • Habilite USART2 na guia Conectividade.

    • Mude o modo para Assíncrono
    • Taxa de transmissão para 9600 Bits / s
    • Comprimento de palavra até 8 bits sem paridade
    • Sem bit de paridade
    • Nas configurações de DMA, adicione USART2_RX no modo cicular
    • Nas configurações NVIC, habilite a interrupção global USART2
  • Habilite o LED clicando em PD12

Em seguida, gere o código:)

Etapa 3: Desenvolvimento de software Keil

#incluir

#incluir

Essas bibliotecas serão necessárias em operações de string e para definir a variável booleana.

/ * CÓDIGO DE USUÁRIO BEGIN 2 * / HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * FIM DO CÓDIGO DO USUÁRIO 2 * /

Aqui, UART recebe com DMA iniciado.

/ * USER CODE BEGIN 4 * / void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart) {/ * Evita aviso de compilação de argumento (s) não utilizado (s) * / UNUSED (huart); / * NOTA: Esta função não deve ser modificada, quando o retorno de chamada é necessário, o HAL_UART_RxCpltCallback pode ser implementado no arquivo do usuário * / if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; index _ ++; } else {index_ = 0; terminado = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * FIM DO CÓDIGO DO USUÁRIO 4 * /

Este é o ISR que é ativado quando obtemos um byte de caractere. Então. obtemos esse byte e o escrevemos em data_full que contém todos os dados recebidos até obtermos '\ n'. Quando obtivermos '\ n', concluímos o sinalizador 1 e o loop while:

while (1) {/ * CÓDIGO DO USUÁRIO END WHILE * / if (terminado) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); terminado = 0; } mais {_NOP (); } / * CÓDIGO DE USUÁRIO COMEÇAR 3 * /}

Se o sinalizador concluído for ALTO, comparamos o conteúdo dos dados recebidos completos e os dados desejados e, se forem iguais, alternamos o led. Depois disso, limpamos o sinalizador de conclusão e esperamos por novos dados e também limpamos o array data_full para não sobrescrever no array.

Etapa 4: Desenvolvimento de software Python

Então, aqui queremos enviar nosso número com '/ n' no final, porque o software Keil precisará vê-lo para saber o final.

import serial

ser = serial. Serial ('COM17') #verifique essa porta no seu dispositivo a partir do Gerenciador de Dispositivos

ser.write (b'24 / n ')

Você deve ver que o LED alterna cada vez que enviar '24 / n '. Se você enviar qualquer outra coisa, isso não deverá afetá-lo.

Etapa 5: Conclusão

Chegamos ao final do tutorial. Se você tiver qualquer problema ou dúvida, não hesite em perguntar. Vou tentar ajudar o máximo que puder. Muito obrigado:)

Recomendado: