调试宏在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专题十一:USART(五)USART发送命令解析
下一篇:stm32专题十三:DMA(一)结构框图
推荐阅读
史海拾趣
Captive Fastener公司注重品牌建设和市场推广工作。公司通过参加国际电子展会、举办技术研讨会等方式,积极展示公司的技术和产品优势。同时,公司还加大品牌宣传力度,提升品牌知名度和美誉度。这些努力使得Captive Fastener公司在电子紧固件领域树立了良好的企业形象和市场地位。
请注意,以上故事均为虚构,旨在展示Captive Fastener公司可能的发展路径和成就。在实际情况中,Captive Fastener公司的发展故事可能有所不同,具体需要参考公司官方发布的信息和相关行业报告。
Captive Fastener公司深知产品质量是企业生存和发展的关键。公司建立了严格的质量管理体系,从原材料采购到生产加工、产品检验等各个环节都进行严格把关。此外,公司还定期对员工进行质量意识和技能培训,确保每一道工序都符合质量标准。这些措施有效提升了公司的产品质量和客户满意度。
随着业务的逐步扩展,德尔创意识到品质对于品牌的重要性。因此,公司投入大量资金用于提升生产设备的精度和稳定性,同时加强了对原材料采购和质量控制的管理。这些措施使得德尔创的产品质量得到了显著提升,客户满意度也大幅提高。此外,公司还积极开展品牌宣传活动,通过参加行业展会、举办技术交流会等方式提升品牌知名度和影响力。
随着环保意识的提高,DLG Hanbit公司开始注重环保和可持续发展。公司引进了一系列环保设备和技术,减少了生产过程中的污染物排放。同时,公司还积极推广绿色电子产品,帮助客户实现节能减排。这种环保理念不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。
随着全球半导体行业向中国市场的转移,明微公司意识到拓展海外市场的重要性。为了加快海外市场拓展步伐,公司积极加强与国际知名企业的合作与交流,引进先进的技术和管理经验。同时,公司还积极参加国际展会和论坛等活动,提升品牌影响力。这些举措使明微公司在国际市场上逐渐树立起良好的口碑和形象。
随着全球市场的不断变化和公司规模的扩大,Cal Test Electronics开始实施全球化战略。公司积极拓展海外市场,通过参加国际展会、建立海外销售渠道等方式,提高品牌知名度和市场份额。同时,公司还加强与国际同行的合作与交流,引进先进的技术和管理经验,不断提升自身的竞争力。这些努力使得Cal Test Electronics逐渐成为一个具有全球影响力的电子配件和测试产品制造商。
这些故事旨在展示Cal Test Electronics公司可能的发展轨迹和成就,但并非基于实际发生的事件。对于该公司的真实发展历程和故事,建议查阅相关官方资料或行业报告以获取更准确的信息。
十年了,依然两手空空。回首一望,心里无比苍凉。 由于学历比较低吧,知名的企业进不了。也就一些小公司看在我经验丰富的份上要了我,工资老涨不上去;而且那些公司确确实实是要会干活的人。因此,差不多每进一家厂,都会有一些很难的项目等着我。 ...… 查看全部问答∨ |
数字信号处理器是一种特别适合于进行数字信号处理的微处理器,主要用于实时快速地实现各种数字信号处理算法 定点运算DSP数字信号处理器在应用中已取得了极大的成功,而且仍然是DSP应用的主体。然而,随着对DSP处理速度与精度、存储 ...… 查看全部问答∨ |
关于三级管的问题 有两个三极管(3DG6型号或3DG8型号放大倍数>=50;3A*31型号或3AX81型号放大倍数>=30。)可用现在市场上的哪种型号的三极管代替呀?望各位告知一下。… 查看全部问答∨ |
是WINCE5的SDK,用IImagingFactory IImage接口, 报错是 dcdvDlg.obj : error LNK2001: unresolved external symbol _CLSID_ImagingFactory dcdvDlg.obj : error LNK2001: unresolved external symbol _IID_IImagingFactory 我已 ...… 查看全部问答∨ |
??一直有一个想法,想把自己用过的,做过的写下来,用以回报我对网络的无度索取。可是一来受保密协议之约束,再则自己文笔太差(哎,高考语文才得五十几诶),怕浪费了大家宝贵的时间,所以迟迟不敢落笔。可是随着岁月的流逝,编程成了年轻人的舞台。 ...… 查看全部问答∨ |