当前位置:首页 > 科技  > 软件

好用的嵌入式设备日志输出模块 log.h

来源: 责编: 时间:2023-11-07 09:14:44 200观看
导读相信大多数嵌入式开发者都会碰到对程序进行调试或者查找BUG的情况,常见的两种方法都是仿真和通过日志进行的。有条件仿真的是更好,单是在编写嵌入式软件程序过程中,并不是所有的硬件都支持仿真或者方便仿真,这样大多数方

相信大多数嵌入式开发者都会碰到对程序进行调试或者查找BUG的情况,常见的两种方法都是仿真和通过日志进行的。nuZ28资讯网——每日最新资讯28at.com

有条件仿真的是更好,单是在编写嵌入式软件程序过程中,并不是所有的硬件都支持仿真或者方便仿真,这样大多数方法便是加打印信息进行找问题。nuZ28资讯网——每日最新资讯28at.com

打印的接口有很多种,比如串口,网络,显示等等。简单的硬件开发串口估计是最常用的。这里简单记录下一种日志打印方法。nuZ28资讯网——每日最新资讯28at.com

nuZ28资讯网——每日最新资讯28at.com

目的:nuZ28资讯网——每日最新资讯28at.com

  • 方便查找打印日志
  • 日志格式规范
  • 可以查看用户添加信息,文件信息,函数接口,以及文件所在行号
  • 支持format格式
  • 可以支持实时时间

基本知识

C语言中的__FILE__、LINE__和__FUNCTION:nuZ28资讯网——每日最新资讯28at.com

  • FILE 用于指示本行代码所在源文件的文件名;
  • __LINE__用于指示本行代码所在源文件中的位置(行数);
  • __FUNCTION__用于指示本行代码所在函数(函数名);

注:nuZ28资讯网——每日最新资讯28at.com

  • "FILE "、"LINE"、"FUNCTION"等均大小写敏感
  • 支持需要添加头文件#include

源码

#define DEBUG_EN (1u) #if (DEBUG_EN) #define DEBUG_MAX_SIZE 512extern char szBuf[DEBUG_MAX_SIZE]; #define DEBUG_INFO( format, ... ) do{/    u16 unLen = 0;/    unLen += snprintf(szBuf+unLen,DEBUG_MAX_SIZE, "[INFO][%s][@%s][#%d]:",__FILE__,__FUNCTION__,__LINE__);/    unLen += snprintf(szBuf+unLen,DEBUG_MAX_SIZE-unLen, format, ## __VA_ARGS__ );/    usart1_send_buf_with_txe((u8 *)szBuf,unLen);/}while(0) #define DEBUG_WARN( format, ... ) do{/    u16 unLen = 0;/    unLen += snprintf(szBuf+unLen,DEBUG_MAX_SIZE, "[WARN][%s][@%s][#%d]:",__FILE__,__FUNCTION__,__LINE__);/    unLen += snprintf(szBuf+unLen,DEBUG_MAX_SIZE-unLen, format, ## __VA_ARGS__ );/    usart1_send_buf_with_txe((u8 *)szBuf,unLen);/}while(0) #define DEBUG_ERR( format, ... ) do{/    u16 unLen = 0;/    unLen += snprintf(szBuf+unLen,DEBUG_MAX_SIZE, "[ERR][%s][@%s][#%d]:",__FILE__,__FUNCTION__,__LINE__);/    unLen += snprintf(szBuf+unLen,DEBUG_MAX_SIZE-unLen, format, ## __VA_ARGS__ );/    usart1_send_buf_with_txe((u8 *)szBuf,unLen);/}while(0) #elif  #define DEBUG_INFO(...)#define DEBUG_WARN(...)#define DEBUG_ERR(...) #endif

nuZ28资讯网——每日最新资讯28at.com

源码主要使用宏定义的方式,为了支持文件、行号,函数等等,不能使用单独的函数进行定义。具体原因可以思考下,不过多赘述。nuZ28资讯网——每日最新资讯28at.com

C文件目前只有一个数组定义char szBuf[DEBUG_MAX_SIZE];。nuZ28资讯网——每日最新资讯28at.com

为了兼容,INFO,WARN和ERR三个共用一个buf,声明全局变量更主要的一个原因是使用了串口的中断发送函数usart1_send_buf_with_txe,而不是循环发送完成再退出,这里传输是进行指针传递的,发送使用中断的好处就是高效率,不耽误其他程序跑。nuZ28资讯网——每日最新资讯28at.com

当然移植的时候完全可以根据自己的接口和实现方式进行更换。nuZ28资讯网——每日最新资讯28at.com

实现效果:

[INFO][../source/main.c][@main][#36]:testStr[111],testInt[111],testHex[0x000015BC][WARN][../source/main.c][@main][#37]:testStr[111],testInt[111],testHex[0x000015BC][ERR][../source/main.c][@main][#38]:testStr[111],testInt[111],testHex[0x000015BC]

图片图片nuZ28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17409-0.html好用的嵌入式设备日志输出模块 log.h

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 使用 Python 在视频上渲染文本

下一篇: 虚拟线程原理及性能分析

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • 如何通过Python线程池实现异步编程?

    如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 当家的盒马,加速谋生

    当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 小米MIX Fold 3配置细节曝光:搭载领先版骁龙8 Gen2+罕见5倍长焦

    小米MIX Fold 3配置细节曝光:搭载领先版骁龙8 Gen2+罕见5倍长焦

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • OPPO K11评测:旗舰级IMX890加持 2000元档最强影像手机

    OPPO K11评测:旗舰级IMX890加持 2000元档最强影像手机

    【Techweb评测】中端机型用户群体巨大,占了中国目前手机市场的大头,一直以来都是各手机品牌的“必争之地”,其中OPPO K系列机型一直以来都以高品质、
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
Top