Keil中有这样一个小工具ConfigurationWizard。可以将我们的配置文件转化成可视化配置。使用keil的很多人应该见过这个功能,尤其使用开源库,比如rt-thread的rtconfig.h中就有可视化配置向导。使用它其实很简单,只要我们在写注释的时候加上一些特定标签就可以了。下面先展示一下效果。
上图的代码注释如下:
// <<< Use Configuration Wizard in Context Menu >>>
//<h> item one
//<i> item 0 test
// <c> use debug
#define USING_DEBUG
// </c>
// <!c> printf off
#define USING_PRINTF_OFF
// </c>
// <s> vresion info
#dfine VERSION "V001.001.1234"
// <o> system tick is <0-2000>
// <i> system tick default is 1000
#dfine SYSTEM_TICK 2000
// <e1.7> value bit valid enable
// <o0.0> value bit 0
// <o0.1> value bit 1
// <o0.2> value bit 2
// <o0.3> value bit 3
// <i> value bit 3 is uart rx enable
// <o0.4..6> value bit 4 5 6
// <0=> enable input 0 <1=> enable input 1
// <2=> enable input 2 <3=> enable input 3
// <4=> enable input 4 <5=> enable input 5
// <6=> enable input 6 <7=> enable input 7
#define INPUT_CONFIG (0x00,0x80)
// </e>
// <c3> use module
// <i> module use macro define
//#define USING_MODULE1
//#define USING_MODULE2
//#define USING_MODULE3
// </c>
// <s> no length limit user id1
// <s1.5> have length limit id2
#define ID "12345678"
#define ID2 "12345"
// <q.0> Data bit 0 modfiy
#define DATA_BIT0 0x00
//<o> data modification mul <#*8>
#define DATA_MUL 8
//</h>
// <<< end of configuration section >>>
根据上图和代码对比是不是感觉特别简单。下面具体说一下它的使用方法和规则。
1.在文件开头定义如下内容:
// <<< Use Configuration Wizard in Context Menu >>>
2.在使用结束后定义如下内容(也可以不定义)
// <<< end of configuration section >>>
3.用如下标签进行组合使用,便可达到可视化配置的效果。
上面的代码对表中的每个标签都有使用演示。挺一目了然的。下面再对标签加以简单的解释。
1.<c></c> <!c> </c>的使用:
<c>和</c>是配套使用的。其功能产生一个复选框,选中复选框则使代码使能,否则被注释,而<!c> </c>正好相反。
<c> time option enable
#define USING_TIME
</c>
除此之外,也可以使用<c#>开始(其中#代表数字 如<c1>、<c2>等)。数字的作用就代表从定义此选项后的第几行开始。
<c1> time option enable
#define TIME_VALUE 1000 //第0行
#define USING_TIME2 //第1行
</c>
上面的标签代码只对 #define USING_TIME2 有定义和未定义之分,但并不会影响到#define TIME_VALUE 1000。
2.<h></h>的使用
使在<h>到</h>中的选项为一个组。
<h> time config
<c> time1 using
#define USING_TIME1
</c>
<c> time2 using
#define USING_TIME2
</c>
</h>
3.<e></e>的使用
在<h></h>的基础上添加了复选框。当选中复选框后,才可以配置子选项。<e>的主要使用是<e#1.#2>,其中#1代表第几个数据(从0开始),#2代表此数据的哪个位(从0开始)。
<e1.7> init config
#define INIT_CONFIG (0x00,0x01)
</e>
其中<e1.7>就代表0x01的第七位。如果使能此复选框,则0x01变为0x81;
4.<i>的使用
标注提示信息使用。提示上一个标签有关信息。
<e1.7> init config
<i> default 0x00,0x01
#define INIT_CONFIG (0x00,0x01)
</e>
其中<i>就是对<e1.7>的提示信息。
5.<q>的使用.主要使用<q#1.#2> #1和#2代表的意义和<e#1.#2>的一样。
通过复选框设置数字的位值.
<q0.1> value bit config
#define VALUE_IS 0x00
对0x00 的第一位进行配置。复选框选中,0x00 就变为0x10.
6.<o>的使用
主要是修改一个数的数值,同时也可以向<q>一样修改数据的某个位。除此之外它还可以修改好几位.如<o.2..3>,修改数据的第2到第3两个位。
7.<s>的使用
修改字符串时一般使用此标签。如果对字符串的长度有限定,可以使用<s.#>.#为字符串的最大长度。
8.标签的修饰和限定使用。
<0-31>:数值的范围(超过此范围,默认为此范围的最大值)
<0-100:10> 数值的范围,带步长。也就是说只能是 0, 10,20,30 ….100.
<0=> 用于选择的值和文本。(形成下拉列表框使用)。
<#+1> <#-1>
<#*8> <#/3> 对要修改的值先做+-*/处理,然后赋值给 定义。
如果对Configuration Wizard还有不了解的地方,可以参看keil的user's guide->utilities->Configuration Wizard.
同时欢迎大家关注公众号:嵌入式的日常