历史上的今天

今天是:2024年10月21日(星期一)

正在发生

2021年10月21日 | stm32专题十二:DEBUG调试宏 C语言 调试宏

发布者:upsilon30 来源: eefocus关键字:stm32  DEBUG 手机看文章 扫描二维码
随时随地手机看文章

调试宏在c编程中比较重要,通常用于前期测试打印调试信息,然后正式发布时,只需要修改宏,就能取消打印全部调试信息,非常方便。


fmt为希望输出的调试信息,比较关键的就是(fmt,...)和##__VA_ARGS__,__VA_ARGS__用于把...替换成宏并连接。


典型用法:


void DefaultFlashSet(void)

{

  // 若Flash标记地址的值没有被正确的写入,则重新写入,只会在全片擦除后执行

if ((InternalFlashRead(FLASH_SIGN_ADDR) != FLASH_WRITE_SIGN)) {

DEBUG_INFO("Flash擦除");

    InternalFlashWrite(FLASH_WRITE_ADDR, MAX_LED_NUM);

  }

else {

DEBUG_INFO("读取数据成功");

}

}

DEBUG_INFO("这是第%d条调试打印", 6);


串口打印结果

debug.h


/**

 ******************************************************************************

 *              Copyright (c) 2019 temp. All Rights Reserved.

 * @file    debug.h

 * @author  

 * @brief   调试宏头文件

 * @version V1.0

 * @data    2019/08/09

 * @note    None

 ******************************************************************************

 */

 

#ifndef __DEBUG_H

#define __DEBUG_H

 

#include

 

#define DEBUG

 

#ifdef DEBUG

 

#define DEBUG_LINE()

  printf("Log: [%s:%s] line = %dn", __FILE__, __func__, __LINE__)

#define DEBUG_INFO(fmt, ...)                                               

  printf("Log: [%s:%s] line = %dn" fmt "n", __FILE__, __func__, __LINE__,

         ##__VA_ARGS__)

 

#else

 

#define DEBUG_LINE()

#define DEBUG_INFO(fmt, ...)

 

#endif

 

#endif /* __DEBUG_H */


关键字:stm32  DEBUG 引用地址:stm32专题十二:DEBUG调试宏 C语言 调试宏

上一篇:stm32专题十一:USART(五)USART发送命令解析
下一篇:stm32专题十三:DMA(一)结构框图

推荐阅读

随着机器人产业的高速发展,机器人产业园也成为当下炙手可热的一个话题。市场需求不断增大,政府部门自然也看到了机器人产业对工业改革的作用。各地纷纷筹建和规划工业机器人产业基地,意图在工业4.0的浪潮中,率先吃到肉。 9月初,东莞松山湖国际机器人产业项目正式开工,时隔两天,碧桂园即宣布与佛山顺德合作,投资800亿打造机器人谷。除此之外,安...
2019年初,国家电网有限公司党组以习近平新时代中国特色社会主义思想为指导,深入贯彻落实“四个革命、一个合作”能源安全新战略,顺应能源革命和数字革命融合发展趋势,创造性提出了“三型两网、世界一流”的战略目标,其中,“三型”是指枢纽型、平台型、共享型企业,围绕产业属性、网络属性、社会属性明确了发展方向;“两网”是指坚强智能电网和泛在...
每个时代都有每个时代的象征,每个时代都有每个时代的时代特点。而我们现在21世纪这个时代的特点就是智能化和现代科技化。随着科学技术的进步,家家户户的生活水平都有了很大的提高。特别是在科技发展这一方面,现在智能生活已经完全的进入了人们的生活,从普通的智能手机到网上购物到智能机器人,越来越多的生活用品都引入了智能系统。而且不仅仅是我们生...
吉时利源表是一种五合一工具,它外观紧凑,同时融合了数字万用表 (DMM)、电源、电流源、电子负载和脉冲发生器的实用功能。吉时利源表满足高性能生产测试、工艺监测、产品开发和研究中电子制造商的专门需求,受到广大客户的青睐。那么如何选择一款符合要求的吉时利源表呢?今天安泰测试就给大家分享一下:总体来说,选择吉时利源表有以下几个指标值得重视...

史海拾趣

问答坊 | AI 解惑

一些关于ARM学习的书籍

最近收集了一些关于ARM学习的书籍,现在就把它们都贴出来,或许对大家学习有所帮助。…

查看全部问答∨

做射频工程师已十年后的感想(转)

十年了,依然两手空空。回首一望,心里无比苍凉。 由于学历比较低吧,知名的企业进不了。也就一些小公司看在我经验丰富的份上要了我,工资老涨不上去;而且那些公司确确实实是要会干活的人。因此,差不多每进一家厂,都会有一些很难的项目等着我。 ...…

查看全部问答∨

定点dsp与浮点dsp的比较

数字信号处理器是一种特别适合于进行数字信号处理的微处理器,主要用于实时快速地实现各种数字信号处理算法    定点运算DSP数字信号处理器在应用中已取得了极大的成功,而且仍然是DSP应用的主体。然而,随着对DSP处理速度与精度、存储 ...…

查看全部问答∨

光耦合继电器

http://www.ecb.omron.com.cn/product/pdf/G3VM-81G1.pdf   帮忙看下这个手册,我想问的是,输出端悬空,能实现开关信号输出吗?…

查看全部问答∨

电源开关 方法

各位好 我想通过MCU控制实现“5V电源的通断”。 我第一印象是通过 “继电器”  来实现。 请教各位还有什么好的方法实现吗? 多谢参与!…

查看全部问答∨

关于三级管的问题(非该论坛的问题)

关于三级管的问题 有两个三极管(3DG6型号或3DG8型号放大倍数>=50;3A*31型号或3AX81型号放大倍数>=30。)可用现在市场上的哪种型号的三极管代替呀?望各位告知一下。…

查看全部问答∨

求助!是经常被问到的关于显示JPG图片的。

是WINCE5的SDK,用IImagingFactory    IImage接口, 报错是 dcdvDlg.obj : error LNK2001: unresolved external symbol _CLSID_ImagingFactory dcdvDlg.obj : error LNK2001: unresolved external symbol _IID_IImagingFactory 我已 ...…

查看全部问答∨

有几个域名想转让,有兴趣的请进

以下三个域名想转让,有需要有可以加QQ联系:289461117 187356070 jizhehui.cn so-suo.cn 晋江鞋城.com …

查看全部问答∨

长篇连载 嵌入式系统的设计和开发(转自天涯 IT视界)

??一直有一个想法,想把自己用过的,做过的写下来,用以回报我对网络的无度索取。可是一来受保密协议之约束,再则自己文笔太差(哎,高考语文才得五十几诶),怕浪费了大家宝贵的时间,所以迟迟不敢落笔。可是随着岁月的流逝,编程成了年轻人的舞台。 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved