30 votos

¿Cómo se utiliza la función printf en el STM32?

Estoy intentando averiguar cómo utilizar la función printf para imprimir en el puerto serie.

Mi configuración actual es STM32CubeMX código generado y SystemWorkbench32 con el Tarjeta de descubrimiento STM32F407 .

Veo en stdio.h que el prototipo printf está definido como

int _EXFUN(printf, (const char *__restrict, ...)
               _ATTRIBUTE ((__format__ (__printf__, 1, 2))));

¿Qué significa? ¿Dónde se encuentra exactamente la definición de esta función? ¿Cuál sería el punto general de averiguar cómo utilizar este tipo de función a la salida?

2voto

Karl Marx Puntos 5

Para los que tienen problemas, añada lo siguiente a syscalls.c:

extern UART_HandleTypeDef huart1; // access huart1 instance
//extern int __io_putchar(int ch) __attribute__((weak)); // comment this out

__attribute__((weak)) int __io_putchar(int ch)
{
    HAL_StatusTypeDef status = HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
    return (status == HAL_OK ? ch : 0);
}

Conéctate a tu puerto COM a través de Putty y deberías estar bien.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X