前言:
在写程序时经常会进行一些配置,比如开启关闭某些功能、修改一些常量等,会反复去修改配置文件。实际上MKD可以将其变为配置界面,这样在修改时更加直观、方便。只需要根据configuration wizard的格式来编写我们的配置文件即可。
类似于上图这样,可以直接修改后面的值或者勾选使能匡,就能实现对函数中的参数或者宏定义进行修改,这样做的目的就是比较直观,简单明了,省的去看代码里面的逻辑关系。
MDK在编译时 是怎们知道这是一个配置文件的呢?就需要用到文件的格式,开头和结尾。// <<< Use Configuration Wizard in Context Menu >>>
和// <<< end of configuration section >>>
至于为什么每个命令的前面都要用//
屏蔽,我也不知道,大家都是这样做的,否则会出错。
1:开头和结尾,我们需要编写的配置都在这两个字符段之间
#ifndef __clk_H
#define __clk_H
#ifdef __cplusplus
extern "C" {
#endif
#include "main.h"
// <<< Use Configuration Wizard in Context Menu >>>
// <<< end of configuration section >>>
#ifdef __cplusplus
}
#endif
#endif
此时里面没有添加其他信息,但能看到这个框已经出现了。
2:命令字
标题命令字 <h>
和</h>
<h>和</h>
必须成对出现,<h>
表示一个段落(组)开始,</h>
表示段落(组)结束,如果只有<h>
没有</h>
系统就会报错。
// <<< Use Configuration Wizard in Context Menu >>
//<h>第一个标题框
//</h>
// <<< end of configuration section >>>
可以看到添加了标题框后,出现了一个可以选择的控件。
比如你的代码中的功能有几个大的模块,你需要单独进行开关宏定义控制,或者使能控制,就可以使用多个<h>
和</h>
来进行控制。例如:
// <<< Use Configuration Wizard in Context Menu >>>
//<h>第一个标题框
//</h>
//<h>第二个标题框
//</h>
//<h>第三个标题框
//</h>
//<h>第四个标题框
//</h>
//<h>第五个标题框
//</h>
// <<< end of configuration section >>>
3:使能组<e>
和</e>
和<h>
类似,但是<e>
确是有更大的功能,Enable。
// <<< Use Configuration Wizard in Context Menu >>>
//<h>第一个标题框
//<e>使能框勾选1
#define XXXX_EN1 1
//</e>
//<e>使能框勾选2
#define XXXX_EN1 1
//</e>
//</h>
//<h>第二个标题框
//</h>
//<h>第三个标题框
//</h>
//<h>第四个标题框
//</h>
//<h>第五个标题框
//</h>
// <<< end of configuration section >>>
这个命令我们可以用于设置某个宏定义是否打开,在程序中我们把某段代码用条件语句进行屏蔽,待调试需要时在打开。
<e>
命令还可以对某个数的某个bit位进行设置,通过<e.n> 命令,n表示第几位。
举个例子:
//<e0.7> 配置该config_bit的第七bit位
#define config_bit = 0x01
//</e>
<e0.7> 表示配置该config_bit的第七bit位,徐如果勾选这个使能,就把第七位置1,(从o开始计算)。理论上没有勾选时的数据就为0x01,勾选后就为0x81。我们来验证下结果:
勾选后:
在返回代码处,看看数值是否被更改了:
可以看到数值已经被更改了,说明我们得设置成功了。<e>
的原型为<e#1.#2>
其中#1代表第几个数据(从0开始),#2代表此数据的哪个位(从0开始)。
例如:
<e1.7>改变两个数值的第七位bit
#define INIT_CONFIG (0x00,0x01)
</e>
<e1.7>
就是指更改数值0x01的第七位bit(从零开始)
4:<i>
的使用
标注提示信息使用。提示上一个标签有关信息。
//<e0.7> 配置该config_bit的第七bit位
//<i> default 0x01
#define config_bit = 0x81
//</e>
5:<o>
的使用
主要是修改一个数的数值,同时也可以向<q>
一样修改数据的某个位
//<o>试剂类型
//<i>1:P2Y12 2:阿司匹林
//<1=>1 <2=>2
#define CARD_TYPE 2
6:<q>
的使用.主要使用<q#1.#2>
#1和#2代表的意义和<e#1.#2>
的一样。
通过复选框设置数字的位值.
<q0.1> value bit config
#define VALUE_IS 0x00
此时在代码中的数值也被改变了:
7: <c> 和</c>
<c>
和</c>
是配套使用的。其功能产生一个复选框,选中复选框则使代码使能,否则被注释,而<!c
> </c>
正好相反。
以上命令的基本运用就是这样,需要更详细的讲解可以去官网。对于整个配置表的编写,整个个流程命令都是综合运用的,结合在一起。