stm32h750/component/libc/printf.c

71 lines
1.2 KiB
C

#include "uart_log.h"
#include "stdarg.h"
#include "string.h"
extern UART_HandleTypeDef console;
int putchar(int c)
{
HAL_UART_Transmit(&console, (uint8_t*)&c, 0, HAL_TIMEOUT_VALUE);
return c;
}
int puts(const char *c)
{
int len;
len = strlen(c);
HAL_UART_Transmit(&console, (uint8_t*)c, len, HAL_TIMEOUT_VALUE);
return len;
}
int putstring(const char *c)
{
int len;
if (c == NULL) {
return 0;
}
len = strlen(c);
HAL_UART_Transmit(&console, (uint8_t*)c, len, HAL_TIMEOUT_VALUE);
return len;
}
#if defined(CONFIG_VSNPRINTF_NANO) && CONFIG_VSNPRINTF_NANO
int printf(const char *fmt, ...)
{
char print_buf[512];
int len;
va_list ap;
va_start(ap, fmt);
len = vsnprintf(print_buf, sizeof(print_buf), fmt, ap);
va_end(ap);
len = (len > sizeof(print_buf)) ? sizeof(print_buf) : len;
HAL_UART_Transmit(&console, (uint8_t*)print_buf, len, HAL_TIMEOUT_VALUE);
return len;
}
#else
extern int console_vsnprintf(const char *fmt, va_list args);
int printf(const char *fmt, ...)
{
int len;
va_list ap;
va_start(ap, fmt);
len = console_vsnprintf(fmt, ap);
va_end(ap);
return len;
}
#endif