重定义STM32串口打印函数:
标准库版本:重定向fputc函数
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (unsigned char)ch);
while(!(USART1->SR & USART_FLAG_TXE));
return (ch);
}
HAL库版本:重定向fputc函数
#ifdef __GNUC__
/* With GCC, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
C/C++ 自定义printf函数debug调试(STM32也适用)
只需用到stdio.h头文件
/* 自定义printf函数的开关 */
#include <stdio.h>
/* 可改变log颜色 */
#define COLOR_GRAY "\033[37m"
#define COLOR_GREEN "\033[32m"
#define COLOR_YELLOW "\033[33m"
#define COLOR_DARKGRAY "\033[30m"
#define COLOR_BLACK "\033[30m"
#define COLOR_NOCOLOR "\033[0m"
#define COLOR_DBLUE "\033[34m"
#define COLOR_RED "\033[31m"
#define COLOR_NORMAL1 "\033[0m"
#define LOG_DBG(format,...) printf(COLOR_DBLUE"LOG DEBUG: "format COLOR_NOCOLOR, ##__VA_ARGS__)
#define LOG_INFO(format,...) printf(COLOR_GREEN"LOG INFO: "format COLOR_NOCOLOR, ##__VA_ARGS__)
#define LOG_WARN(format,...) printf(COLOR_YELLOW"LOG WARN: "format COLOR_NOCOLOR, ##__VA_ARGS__)
#define LOG_ERROR(format,...) printf(COLOR_RED"LOG ERROR: "format COLOR_NOCOLOR, ##__VA_ARGS__)
LOG_INFO("hello world\n");