0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

调试打印技巧分享

玩转单片机 来源:玩转单片机 作者:玩转单片机 2022-12-12 13:55 次阅读

在项目中直接使用printf输出不是一种好习惯, 一般都建议对调试输出进行二次封装,方便在项目交付阶段进行调试屏蔽,通过对不同优先级的配置,也方便在调试阶段调试,下方就是一个简单的封装:

#ifndef __LOG_H__
#define __LOG_H__


#include 
#include 


/* 定义打印类型 */
#define    LOG_LVL_EMERG  0            /*!< 紧急 */
#define   LOG_LVL_ERROR  (LOG_LVL_EMERG + 1)    /*!< 错误 */
#define   LOG_LVL_WARN  (LOG_LVL_EMERG + 2)    /*!< 警告 */
#define   LOG_LVL_INFO  (LOG_LVL_EMERG + 3)    /*!< 信息 */
#define   LOG_LVL_DEBUG  (LOG_LVL_EMERG + 4)    /*!< 调试 */
#define   LOG_LVL_TRACE  (LOG_LVL_EMERG + 5)    /*!< 追踪 */


#define   DISABLE         0
#define   ENABLED         1


#define   PRINTF_OMIT     DISABLE                 /*!< 使能输出 */
// #define   PRINTF_OMIT     ENABLED                 /*!< 关闭输出 */


#define log_printf(...)     printf(__VA_ARGS__)


#if (PRINTF_OMIT == DISABLE)
  #define LOG(level, ...)              
    do{                              
      if(level <= LOG_LVL_CTRL){   
        log_printf(__VA_ARGS__); 
      }                            
    }while(0)
#else
    #define LOG(level,...);
#endif


extern uint8_t LOG_LVL_CTRL;


void log_usart_init(void);


/* 使用 */
// LOG(LOG_LVL_DEBUG, "%d
",i);


#endif /* __LOG_H__ */

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    124

    文章

    7281

    浏览量

    141100
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • Printf
    +关注

    关注

    0

    文章

    79

    浏览量

    13478

原文标题:技巧|调试打印

文章出处:【微信号:玩转单片机,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【开源代码】-基于国民N32G45x系列MCU使用JLINK的开发组件工具-RTT Viewer 调试打印

    我的芯片是:国民技术的 N32G45XVL SEGGER-RTTViewer 打印调试信息方法 准备资料: jlink调试器一个 开发板引出swclk 和swdio 引脚 安装jflash套件
    的头像 发表于 10-27 12:06 4055次阅读
    【开源代码】-基于国民N32G45x系列MCU使用JLINK的开发组件工具-RTT Viewer <b class='flag-5'>调试</b><b class='flag-5'>打印</b>

    基于单片机的串口调试打印

    查看EK-RA6M4的原理图,如下图所示,串口 UART0 挂在了Pmod2接口的 P411,P410 这两个引脚上,而这两个引脚又可以复用为 SPI1 功能的两个引脚。此时,我们将希望修改FSP配置,让这两个引脚作为程序的 printf() 标准输出调试打印
    的头像 发表于 12-19 09:23 2203次阅读
    基于单片机的串口<b class='flag-5'>调试</b><b class='flag-5'>打印</b>

    Fx3 Uart调试打印错误

    嗨,伙计们,我试图用UVCVideoClass例子来获得在FX3上的UART调试工作。不幸的是,我只能在控制台上得到垃圾:在我的串行控制台中,不是预期的“应用程序启动\r\n”,而是在我的串行控制台
    发表于 01-24 11:35

    串口调试打印是怎样支持文本颜色输出的

    串口调试打印输出的颜色日志格式是怎样的?串口调试打印是怎样支持文本颜色输出的?
    发表于 02-14 07:56

    AB32VG1开发板开发环境搭建和串口调试打印过程

    有幸申请到开发板,下面说下开发环境搭建和串口调试打印过程1:先下载RTT studio开发工具,RTT studio下载地址2:下载完成后,需要测试帐号才可以登录IDE,这部分略过3:新建RTT工程
    发表于 10-10 17:29

    cmbackTrace组件在开启ulog后调试打印不一样是何原因

    packages—>tools packages—>cmbackTrace测试: cmb_test DIVBYZERO效果:可以看到此时打印正常开启ULOG功能(使能FILE BACKEND 与LOG FILTER,有时候不开启是正常的)测试:这与前打印不一
    发表于 11-02 10:59

    蜂鸟E203移植ZYNQ7000开发板调试打印hellowaord乱码怎么解决?

    移植蜂鸟E203到zynq 保留GPIOA模块,用gpio16和gpio17做串口uart的RX和TX.用Nucleistidio里面模板的helloworld建工程后,下载到开发板里面 串口打印
    发表于 08-12 07:49

    AM335x平台在引导SPL、Uboot、Kernel期间如何修改调试打印串口概述

     大家好,这篇文章主要基于AM335x的 linux SDK,讲述如何修改UART接口去打印调试信息。AM335x一共有六个串口,分别是UART0、UART1、UART2、UART3、UART4
    发表于 04-23 17:03 22次下载
    AM335x平台在引导SPL、Uboot、Kernel期间如何修改<b class='flag-5'>调试</b><b class='flag-5'>打印</b>串口概述

    串口调试打印[支持文本颜色输出]

    #日志颜色格式说明颜色日志格式格式:\033[显示方式;字体色;背景色m如缺省默认:\033[0m //表示结束打印-\033 八进制转义 表示ESC-显示方式0(默认值)、1(高亮)、22
    发表于 12-14 19:04 0次下载
    串口<b class='flag-5'>调试</b><b class='flag-5'>打印</b>[支持文本颜色输出]

    手把手教你把JLink变成串口调试助手

    摘要:不知道大家在单片机开发中是如何打印调试信息的,大多数应该是用串口调试打印吧,在大多数的情况下,一般在制板和写代码时都会预...
    发表于 01-25 17:23 1次下载
    手把手教你把JLink变成串口<b class='flag-5'>调试</b>助手

    如何用调试器JLink来打印信息

    摘要:不知道大家在单片机开发中是如何打印调试信息的,大多数应该是用串口调试打印吧,在大多数的情况下,一般在制板和写代码时都会预留串口1做为调试
    的头像 发表于 10-14 09:55 2564次阅读

    OpenHarmony系统如何使用gdb调试init

    其为内核直接拉起的第一个用户态进程,问题定位手段只能依赖代码走读和增加调试打印,初始化过程中系统崩溃的问题就更难定位了。如果能使用 gdb 调试 init,会极大提高定位效率。
    的头像 发表于 01-15 15:53 651次阅读

    Jlink调试打印工具RTT

    RTT支持两个方向的多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的自由。默认实现每个方向使用一个通道,用户可在在调试终端输入和输出。
    发表于 04-06 09:22 0次下载

    Event Recoder调试组件在stm32上的使用

    因为做产品开发,设计东西有时候考虑得多,mcu的并没有多余的串口供使用调试,在调试一些初期进行验证时,必要的调试打印信息是需要的。
    的头像 发表于 05-15 10:49 661次阅读
    Event Recoder<b class='flag-5'>调试</b>组件在stm32上的使用

    适合单片机裸机的开源软件框架:Zorb

    采用STM32F429开发板作为硬件运行环境,硬件资源用到串口1和systick,其中串口1提供调试打印功能,systick提供系统时间计数功能。
    发表于 04-12 09:42 120次阅读
    适合单片机裸机的开源软件框架:Zorb