STM32串口调试封装

通过此封装 可以在串口调试的时候 打印出文件名和行号 比较方便

// 1. 定义DEBUG宏 表示是开发环境
#define DEBUG

// 2. 如果是开发环境,则debug函数内有printf
#ifdef DEBUG

// 根据__FILE__提供的完整路径 获取文件名(思路找到/最后一次出现的位置)
#define _FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
#define FILENAME (strrchr(_FILENAME, '\\') ? strrchr(_FILENAME, '\\') + 1 : _FILENAME)

// 函数式宏的方式定义调试函数
#define debug_printf(format, ...) printf("[%s : %d]" format, FILENAME, __LINE__, ##__VA_ARGS__)
#define debug_printfln(format, ...) printf("[%s : %d]" format "\r\n", FILENAME, __LINE__, ##__VA_ARGS__)

#else
// 3. 如果不是开发环境 则debug函数 是空

#define debug_printf()
#define debug_printfln(format, ...)

#endif
int fputc(int ch, FILE *file)
{
    HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 1000);
    return ch;
}

添加新评论