Tabla de contenido:

STM32F4 Discovery Board y Python USART Communication (STM32CubeMx): 5 pasos
STM32F4 Discovery Board y Python USART Communication (STM32CubeMx): 5 pasos

Video: STM32F4 Discovery Board y Python USART Communication (STM32CubeMx): 5 pasos

Video: STM32F4 Discovery Board y Python USART Communication (STM32CubeMx): 5 pasos
Video: How to program a HEX file to the STM32F4 Discovery Board 2024, Mes de julio
Anonim
STM32F4 Discovery Board y Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board y Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board y Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board y Python USART Communication (STM32CubeMx)

¡Hola! En este tutorial intentaremos establecer la comunicación USART entre STM32F4 ARM MCU y Python (puede ser reemplazado por cualquier otro lenguaje). Entonces empecemos:)

Paso 1: requisitos de software y hardware

En términos de hardware, necesita:

  • Placa de descubrimiento STM32F4 (o cualquier otra placa STM32)
  • Convertidor de USB a TTL

En términos de software:

  • STM32CubeMX
  • Keil uVision5
  • Python con biblioteca serial instalada

Paso 2: Configuración de STM32CubeMX

Primero entendamos lo que queremos hacer. Queremos transmitir datos a la placa desde Python a través de USART y verificar si tenemos los datos correctos y el led de alternancia. Entonces, necesitamos habilitar USART y Led.

  • Habilite USART2 desde la pestaña Conectividad.

    • Cambiar el modo a Asíncrono
    • Tasa de baudios a 9600 Bits / s
    • Longitud de palabra a 8 bits sin paridad
    • Sin bit de paridad
    • Desde la configuración de DMA, agregue USART2_RX en modo circular
    • Desde la configuración de NVIC, habilite la interrupción global de USART2
  • Habilite el LED haciendo clic en PD12

Luego genera código:)

Paso 3: Desarrollo de software de Keil

#incluir

#incluir

Estas bibliotecas serán necesarias en las operaciones de cadenas y para definir la variable booleana.

/ * CÓDIGO DE USUARIO COMIENZO 2 * / HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * CÓDIGO DE USUARIO FIN 2 * /

Aquí, comenzó la recepción UART con DMA.

/ * CÓDIGO DE USUARIO COMIENZO 4 * / void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart) {/ * Evita la advertencia de compilación de argumentos no utilizados * / UNUSED (huart); / * NOTA: Esta función no debe modificarse, cuando se necesita la devolución de llamada, la HAL_UART_RxCpltCallback podría implementarse en el archivo de usuario * / if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; índice _ ++; } más {index_ = 0; terminado = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * CÓDIGO DE USUARIO FIN 4 * /

Este es el ISR que se activa cuando obtenemos un byte de carácter. Entonces. obtenemos ese byte y lo escribimos en data_full que contiene todos los datos recibidos hasta que obtenemos '\ n'. Cuando obtenemos '\ n', hacemos la bandera de terminado 1 y en el bucle while:

while (1) {/ * CÓDIGO DE USUARIO 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; } más {_NOP (); } / * CÓDIGO DE USUARIO COMIENZO 3 * /}

Si la bandera de terminado es ALTA, comparamos el contenido de los datos recibidos completos y los datos que deseamos y, si son iguales, cambiamos el led. Después de eso, borramos la bandera de terminado y esperamos nuevos datos y también borramos la matriz data_full para no sobrescribir la matriz.

Paso 4: Desarrollo de software Python

Entonces, aquí queremos enviar nuestro número con '/ n' al final, porque el software Keil necesitará verlo para saber el final.

importar serial

ser = serial. Serial ('COM17') # verifique ese puerto en su dispositivo desde el Administrador de dispositivos

ser.write (b'24 / n ')

Debería ver que el LED cambia cada vez que envía '24 / n '. Si envía algo más, no debería afectarlo.

Paso 5: Conclusión

Hemos llegado al final del tutorial. Si tiene algún problema o pregunta, no dude en preguntar. Intentaré ayudar tanto como pueda. Muchísimas gracias:)

Recomendado: