×
嵌入式 > 技术百科 > 详情

MDK 工程宏定义的应用

发布时间:2020-06-15 发布时间:
|

这个宏定义是指工程的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





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Semtech的LoRa技术携手Chipsafer将牧场连接至云端