历史上的今天
今天是:2025年04月19日(星期六)
2019年04月19日 | MDK 工程宏定义的应用
2019-04-19 来源:eefocus
这个宏定义是指工程的Options窗口--“C/C++”--“Preprocerssor Symbols”下的宏定义。

在这里宏定义了可以让编译器选择性的编译某些代码。如:
#if defined(LCD_MODEL_AT043)
#define C_GLCD_H_PULSE 41
#define C_GLCD_H_FRONT_PORCH 10
#define C_GLCD_H_BACK_PORCH 10
#define C_GLCD_V_PULSE 10
#define C_GLCD_V_FRONT_PORCH 2
#define C_GLCD_V_BACK_PORCH 2
#elif defined(LCD_MODEL_AT070)
#define C_GLCD_H_PULSE 20
#define C_GLCD_H_FRONT_PORCH 210
#define C_GLCD_H_BACK_PORCH 46
#define C_GLCD_V_PULSE 10
#define C_GLCD_V_FRONT_PORCH 22
#define C_GLCD_V_BACK_PORCH 23
#else
#define C_GLCD_H_PULSE 20
#define C_GLCD_H_FRONT_PORCH 250
#define C_GLCD_H_BACK_PORCH 50
#define C_GLCD_V_PULSE 5
#define C_GLCD_V_FRONT_PORCH 5
#define C_GLCD_V_BACK_PORCH 5
#endif
在上面的代码中,因为在工程的宏定义中定义了LCD_MODEL_AT043,所以只有下面的宏定义会被编译:
#define C_GLCD_H_PULSE 41
#define C_GLCD_H_FRONT_PORCH 10
#define C_GLCD_H_BACK_PORCH 10
#define C_GLCD_V_PULSE 10
#define C_GLCD_V_FRONT_PORCH 2
#define C_GLCD_V_BACK_PORCH 2
这个宏定义的应用场景如:
当你的程序可能会被用于两种液晶屏:4.3寸和7寸,那么你就可以这样做:
在“Manage Project Items”窗口下的“Project Targets”里建两个工程对象(如果你之前只建了一个,那么你直接再添加一个即可)。

这时你回到MDK下就可以看到在下载按钮旁边的下拉框里有两个选项了。

这就是你刚才建立的工程对象。
选中第一个4.3寸的工程对象,在工程宏定义里添加LCD_MODEL_AT043
选中第二个7寸的工程对象,在工程宏定义里添加LCD_MODEL_AT070
这样就完成了。
当你要用4.3寸屏幕程序时,在下拉框里选中4.3寸屏幕的工程对象,宏定义LCD_MODEL_AT043就会生效,只编译你程序里
#if defined(LCD_MODEL_AT043)
#define C_GLCD_H_PULSE 41
#define C_GLCD_H_FRONT_PORCH 10
#define C_GLCD_H_BACK_PORCH 10
#define C_GLCD_V_PULSE 10
#define C_GLCD_V_FRONT_PORCH 2
#define C_GLCD_V_BACK_PORCH 2
的部分。
也可以用这种方式,把调试用的程序和正式版程序分开来,当你调试时需要一些调试信息,那么你就可以用宏定义把它包含起来,如:
#if defined(debug)
shellSnd("It`s debuging status now!");
#endif
上一篇:J-link v8固件修复
下一篇:汇编中AREA和ENTRY理解
史海拾趣
|
Microchip扩充率22位Δ-Σ模数转换器阵容新款模数转换器可抑制阻止50或60 Hz线路频率噪音噪声,实现高精度测量 Microchip Technology Inc.(美国微芯科技公司)日前宣布其低功耗率、高分辨率Δ-Σ模数转换器系列又添新成员——新款MCP3550加 ...… 查看全部问答> |
|
本人有个带驱动器的步进电机,型号为BL55S-M01是三星打印机上的,上面带一个10针的插座分别为:1.24V 2. 24V 3.GND 4.GND 5.BK 6.5V(NC) 7.ST/SP 8.RD 9.CLK 10.CW /CCW。哪位高手能否介绍一下那些管脚的作用?… 查看全部问答> |
|
平台:S3C2440、WINCE5.0 问题现象描述: 1、1G以下的SD卡一切正常。 2、2G的卡插入无法识别到卡的盘符 特别现象描述: 正常插入卡无法识别2G卡,但插入的时候使劲按住卡不放,能正常识别到卡,并能正常读写,为什么?1G以下卡没 ...… 查看全部问答> |
|
由于公司扩展,急需招聘Windows Mobile/Win CE应用工程师 有意者发送简历到simonjin@gotoup.cn或直接发送到hr@gotoup.cn 公司简介: 上海向上信息科技有限公司是一家专业从事智能手机研究、开发的高新技术企业。主要 ...… 查看全部问答> |
|
我在计算机上用串口调试助手给80S51发送31个字节的16进制数据,比如:dd 01 ...09。dd是一个标志位后面的30个数据才是单片机所要处理的数据,单片机然后将这30个字节显示在数码管上。但是得到的现象是:所有数码管都显示最后一个字节的数09,单片机 ...… 查看全部问答> |
|
各位: 我用一个临时DC来选图片,然后把到放到内存DC指定位置,然后把内存DC的图片拷到显示DC里去。 刚开始的时候显示DC里是一个纯黑的图,BitBlt过去后,彩色图片变成白色了。 后来我把显示DC清空,直接把内存DC的拷到显示DC里去, ...… 查看全部问答> |
|
已经为大家准备了一批STM32系列芯片,覆盖了所有的芯片型号,从36PIN到100PIN,直接查询零售价,如果有需要可以电话联系我们。www.mxchip.com网站新版,欢迎指导!… 查看全部问答> |




