Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo utilizar la función printf en la programación stm32

Cómo utilizar la función printf en la programación stm32

Hay dos métodos de configuración:

1. Configure las propiedades del proyecto. Los pasos detallados son los siguientes

1. (archivo de encabezado de entrada y salida estándar).

2. Redefina la función en el archivo principal de la siguiente manera:

//Enviar datos

int fputc(int ch, FILE *f)

{

USART_SendData(USART1, (unsigned char) ch);//USART1 puede ser reemplazado por USART2, etc.

mientras (!(USART1->SR & USART_FLAG_TXE));

return (ch);

}

//Recibir datos

int GetKey (void) {

mientras (!(USART1->SR & USART_FLAG_RXNE));

retorno ((int)(USART1->DR & 0x1FF));

}

De esta manera, cuando se usa printf, se llamará a la función fputc personalizada para enviar caracteres.

3. Marque "Usar MicroLIB" en la opción "Destino" -> "Generación de código" de las propiedades del proyecto.

MicroLIB es la biblioteca de respaldo del C predeterminado. infórmese Conéctese en línea para encontrar información detallada.

La configuración ahora está completa y puede usar printf para enviar datos al puerto serie en el proyecto.

2. El segundo método es agregar el archivo "Regtarge.c" al proyecto.

1 Incluir el archivo "stdio.h" en el archivo principal.

2. Cree un archivo en el proyecto y guárdelo como Regtarge.c, y luego agréguelo al proyecto

Ingrese el siguiente contenido en el archivo (simplemente cópielo directamente)

#include

#include

#pragma import(__use_no_semihosting_swi)

extern int SendChar(int ch); // Declarar funciones externas y definirlas en el archivo principal

extern int GetKey(void);

struct __FILE {

int handle; // Agrega lo que necesites aquí

};

ARCHIVO __stdout;

ARCHIVO __stdin;

int fputc(int ch, ARCHIVO *f) {

retorno (SendChar(ch));

}

int fgetc(FILE *f) {

return (SendChar(GetKey()));

}

void _ttywrch(int ch) {

SendChar (ch);

}

int ferror(ARCHIVO *f) { // Su implementación de ferror

return EOF;

}

void _sys_exit(int return_code) {

label : ir a etiqueta; // bucle sin fin

}

3. Agregue y defina las dos funciones siguientes en el archivo principal

int SendChar (int ch) {

while (!(USART1->SR & USART_FLAG_TXE)); // USART1 puede ser reemplazado por el puerto serie utilizado para la comunicación en su programa

USART1->DR = (ch & 0x1FF);

return (ch);

}

int GetKey (void) {

mientras (!(USART1- >SR & USART_FLAG_RXNE));

return ((int)(USART1->DR & 0x1FF));

}

La configuración ahora está completa y puedes usar printf libremente en el archivo principal.