历史上的今天
返回首页

历史上的今天

今天是: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


推荐阅读

史海拾趣

Gilway Technical Lamp公司的发展小趣事
制冷剂是制冷系统中的重要介质,如果制冷剂泄漏,制冷效果将大打折扣甚至完全失效。
Good Sky Electric Co Ltd公司的发展小趣事
电气原理图在摇臂钻床维修中起着至关重要的作用。它详细描绘了设备的电气控制系统和元件之间的连接关系,为维修人员提供了准确的故障排查和检修依据。通过仔细阅读和分析电气原理图,维修人员可以迅速定位故障点并采取相应的修复措施,从而缩短维修时间并降低维修成本。
Agilent Technologies公司的发展小趣事
Z32A、Z32K、Z3025J型摇臂钻床的主电路通常包括断路器、主电路熔断器、接触器正反转主触点、热继电器以及电机等关键元件。这些元件共同协作,确保钻床的安全稳定运行。
HCC Industries公司的发展小趣事

2015年,HCC Industries迎来了其发展历程中的一个重要转折点。在这一年,公司成功收购了另一家具有强大研发实力和市场份额的微电子企业。此次并购不仅使HCC在技术上得到了进一步的补充和提升,还大大增强了其生产能力和市场覆盖范围。通过整合双方资源,HCC在短时间内实现了规模的快速扩张和效益的显著提升,进一步巩固了其在行业内的领先地位。

Faraday Technology公司的发展小趣事

随着国内市场的饱和,HCC Industries在2010年制定了国际化发展战略。公司首先选择在欧洲市场设立分支机构,利用其先进的制造工艺和技术优势,迅速打开了当地市场。随后,HCC又相继在亚洲和北美地区设立了多个办事处和生产基地,实现了全球范围内的生产和销售网络布局。这一战略不仅显著提升了HCC的品牌影响力,也为其带来了更加多元化的客户群体和更广阔的市场空间。

广东华裕(GDHY)公司的发展小趣事

2015年,HCC Industries迎来了其发展历程中的一个重要转折点。在这一年,公司成功收购了另一家具有强大研发实力和市场份额的微电子企业。此次并购不仅使HCC在技术上得到了进一步的补充和提升,还大大增强了其生产能力和市场覆盖范围。通过整合双方资源,HCC在短时间内实现了规模的快速扩张和效益的显著提升,进一步巩固了其在行业内的领先地位。

问答坊 | AI 解惑

Microchip扩充率22位Δ-Σ模数转换器阵容

 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。哪位高手能否介绍一下那些管脚的作用?…

查看全部问答>

朋友 喜欢玩中星9号卫星资料华亚微

朋友 喜欢玩中星9号卫星资料华亚微HTV903,,PCB文件是ASC可以用PROTEL99/POWERPCB导入.…

查看全部问答>

请高手看看这个屏

请高手看看这个屏,请告诉我型号,在下感激不尽…

查看全部问答>

CE5.0下 2G SD卡不能识别,1G以下正常,为什么?

平台:S3C2440、WINCE5.0 问题现象描述: 1、1G以下的SD卡一切正常。 2、2G的卡插入无法识别到卡的盘符 特别现象描述:    正常插入卡无法识别2G卡,但插入的时候使劲按住卡不放,能正常识别到卡,并能正常读写,为什么?1G以下卡没 ...…

查看全部问答>

关于USB设备的读取

{                 m_strLog += _T(\"抱歉,未找到可用的USB设备\");…

查看全部问答>

招聘Windows Mobile/Win CE应用工程师

由于公司扩展,急需招聘Windows   Mobile/Win   CE应用工程师 有意者发送简历到simonjin@gotoup.cn或直接发送到hr@gotoup.cn 公司简介: 上海向上信息科技有限公司是一家专业从事智能手机研究、开发的高新技术企业。主要 ...…

查看全部问答>

请教:单片机遇计算机通讯问题

我在计算机上用串口调试助手给80S51发送31个字节的16进制数据,比如:dd 01 ...09。dd是一个标志位后面的30个数据才是单片机所要处理的数据,单片机然后将这30个字节显示在数码管上。但是得到的现象是:所有数码管都显示最后一个字节的数09,单片机 ...…

查看全部问答>

BitBlt的画图问题

各位:   我用一个临时DC来选图片,然后把到放到内存DC指定位置,然后把内存DC的图片拷到显示DC里去。 刚开始的时候显示DC里是一个纯黑的图,BitBlt过去后,彩色图片变成白色了。 后来我把显示DC清空,直接把内存DC的拷到显示DC里去, ...…

查看全部问答>

STM32F10xxSample/Price

已经为大家准备了一批STM32系列芯片,覆盖了所有的芯片型号,从36PIN到100PIN,直接查询零售价,如果有需要可以电话联系我们。www.mxchip.com网站新版,欢迎指导!…

查看全部问答>