自定义printf"/>
STM32 打印LOG 以及 自定义printf
stm32 debug 的小技巧
通过设置 #define DEBUG 为1还是0 来控制log的输出,__LINE__和__func__,输出当前行以及当前的函数名,初始化完毕前打印编译的时间
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define DEBUG 1 // 1打开打印 0关闭所有打印#if DEBUG#define DBG(format,...) printf(format, ##__VA_ARGS__)//正常打印//#define DBG(format,...) printf("[%s][%05d]:"format, __func__, __LINE__, ##__VA_ARGS__) //打印函数名,行号//#define DBG(format,...) printf("["__FILE__"][%s][%05d]: "format, __func__, __LINE__, ##__VA_ARGS__)//打印文件名,函数名,行号
#else #define DBG(format,...)
#endif int main(void)
{delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);uart_init(2000000);LED_Init();KEY_Init();OLED_Init();/* 初始化完毕打印当前编译日期时间 */DBG("************************************\n");DBG("[data:%s][time:%s]\n", __DATE__, __TIME__);DBG("************************************\n");while(1){DBG("System running!\n");delay_ms(1000);}
}
效果:
************************************
[data:Apr 6 2023][time:20:39:23]
************************************
System running!
System running!
System running!
System running!
System running!
System running!
System running!
System running!
System running!
System running!//下面为打开输出详细信息的log[main][00031]:************************************
[main][00032]:[data:Apr 6 2023][time:20:39:36]
[main][00033]:************************************
[main][00036]:System running!
[main][00036]:System running!
[main][00036]:System running!
[main][00036]:System running!
[main][00036]:System running!
[main][00036]:System running!
关于自定义printf函数的封装:
void OLED_ShowStr(uint8_t x,uint8_t y,uint8_t size1, const char* fmt, ...)
{char str[32];va_list args; //定义一个va_list类型的变量,用来储存单个参数 va_start(args, fmt); //使args指向可变参数的第一个参数 vsprintf(str, fmt, args); //必须用vsprintf等带V的 OLED_ShowString(x, y, (uint8_t *)str, size1); //OLED显示va_end(args); //结束可变参数的获取
}
通过封装printf函数,我们可以实现方便的显示函数,
如: OLED_ShowStr(0, 0, 16, "abcd"); //在显示屏上面显示 abcd
OLED_ShowStr(0, 0, 16, "当前温度%.2f度",tem); //当tem = 25.12的时候 显示屏上面显示 当前温度25.12度
OLED_ShowStr(0, 0, 16, "模式为:%s",mode); //当mode= 制冷模式 的时候 显示屏上面显示 模式为:制冷模式
等等等……
还是很方便的
更多推荐
STM32 打印LOG 以及 自定义printf
发布评论