STM32 打印LOG 以及 自定义printf

编程入门 行业动态 更新时间:2024-10-06 17:22:15

STM32 打印LOG 以及 <a href=https://www.elefans.com/category/jswz/34/1771438.html style=自定义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

本文发布于:2024-03-10 00:03:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726502.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   LOG   printf

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!