历史上的今天
今天是:2024年10月21日(星期一)
2021年10月21日 | stm32专题十二:DEBUG调试宏 C语言 调试宏
2021-10-21 来源:eefocus
调试宏在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 */
史海拾趣
|
学习单片机需要掌握的硬件问题,大家一起分享 就单片机学习过程中硬件设计方面的几个基本问题一起分享 1、电阻电容的封装形式如何选择,有没有什么原则?比如,同样是 104 的电容有 0603、0805 的封装,同样是 10uF 电容有 3216、0805、3528 ...… 查看全部问答> |
|
施耐德触摸屏XBTGT5330之COM1或COM2口进行串口通讯得进 想利用XBTGT5330的COM口(com1或com2口)与第三方厂家的仪表进行串行通讯 该第三方的通讯协议符合modbus协议。其具体协议数据格式为: 开始符 指令代码 ...… 查看全部问答> |
|
我的ARM开发板通过串口连接的GPRS MODEM上网,它也有以太网口,我想把接收的GPRS数据转发到以太网口上(它所在的局域网),请问难不难啊。… 查看全部问答> |
|
1 .MOV A,Rn 寄存器内容送入累加器2 .MOV A,direct 直接地址单元中的数据送入累加器3 .MOV A,@Ri (i=0,1)间接RAM 中的数据送入累加器4 .MOV A,#data 立即数送入累加器5 .MOV Rn,A 累加器内容送入寄存器6 .MOV Rn,direct 直接地址单元中的数据送入寄 ...… 查看全部问答> |
|
C6455 TCP2中TCPIC0~15有一半的寄存器写不进去 在CCS3.3下,查看寄存器的值,发现TCP2中TCPIC0~TCPIC15中,有一半的寄存器不能write,分别是TCPIC(1,3,5,7,9,11,13,15),是因为哪个控制器锁住了吗? 情况紧急,请求各位帮助,谢谢!… 查看全部问答> |
|
LPC1500体验+(4)使用SWM将功能动态分配到任意引脚 本帖最后由 mars4zhu 于 2014-9-23 11:14 编辑 LPCXpresso1549试用报告——(3)使用SWM将功能动态分配到任意引脚 文档编号AN-0001-A0关键字LPCXpresso1549, LPCOpen, LPC1549, Keil MDK, ARM Cortex-M, SWM, 功能分配任意引脚摘要本文记 ...… 查看全部问答> |
|
51单片机的程序计数器PC的16位的也就是65536 ARM的程序计数器是32位也就是4G的空间地址 如何理解这写内容呢? PC指针是否就限制了程序的大小呢,或者说是程序的长短。 以STC89C52为例 程序存储空间是8K PC的最大数是65536。 … 查看全部问答> |
|
import pyb import time from pyb import Pin,Timer from DHT11 import DHT11 S=DHT11(\'Y2\') A=\'\' def f(t): global A,S pyb.LED(1).toggle() ...… 查看全部问答> |




