- 目的
为了能快速地实现宏定义的可视化管理及使用其修改数值项
- 以下使用nrf52832为例来新建工程进行演示
新建一个工程,工程名为test,然后点保存
选择nRF52832_xxAA设备类型,然后点OK键确定
选择勾上CORE 5.0.2和Startup这两个选项,然后点击OK键确定
新键一个main.c文件并加入到工程,加入nrf_52.h头文件,并输入以下代码后编译
新建一个sdk_config.h,并加入工程,然后输入以下内容
- 现在演示Use Configuration Wizard in Context Menu这个功能
在sdk_conf.h的文件头部加入// >\n和文件的未尾加
入// >这两行,来告诉keil这是一个配置向导菜单的开始与结束声明
关闭工程,然后再次打开工程,sdk_config.h中在keil下方会多次一个Configuration Wizard选项,点击此选项
1. 上面配置内没有任何东西,现在来讨论这对标签,这对标签是声明一个标题头,跟随在后面的内容将会
被当成标题头显示在配置选项卡中,例如声明一个TEST_HEAD,在sdk_config.h中的// >\n的后面输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
//
// >
#endif
配置选项卡中将会多出一个标题头TEST_HEAD2.和这个标签是一个单选开关,作用是开启或关闭一位选项,跟随在后面的内容将作为单选开关的描述内容,
例如,在TEST_HEAD标题组中输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// // >
#endif
TEST_ENABLE后面将会多出一个单选框3.如果开启的值不是1和0,而是其它的位,假如要开启或关闭第2位,那么此时使用这组标签,其中n表示第几位,
例如,在sdk_config.h中输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 #define TEST_BIT2 4 // // // >
#endif
TEST_ENABLE_BIT2多出一个单选框,TEST_BIT2的取值是0和44. 这个标签是信息提示,使用这个标签,当鼠标停留在当前的条目的时候可以显示提示信息,提示后面的内容,这个标
签是单独的一个标签,不是成对出现的,例如,输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2// this is enable bit 2 #define TEST_BIT2 4 // // // >
#endif
当鼠标放在TEST_ENABLE_BIT2上后会弹出一个提示信息5. 这个标签是单选不分段标签,这个标签也是单独的,没有成对出现,这个和标签有点相似,首先都是单选框标
签,不同的是不分段,是可以分段,例如输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // // >
#endif
TEST_SINGLE_ENALBE在TEST_ENABLE_BIT2的分段下面,TEST_SINGLE_ENALBE下没有任何分组
6. 如果不分段单选标签要指定某一位,那么使用来定义,n表示第几位,例如要开启或关闭第7位,则输入以下内容后
保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1// TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80 // // >
#endif TEST_SINGLE_BIT7_ENALBE单选框的开启或关闭,使TEST_SINGLE_BIT7 的取值是0和0x80两个值
7. 这个标签是输入或选择数值,例如,输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80// INPUT_A_NUMBER #define TEST_NUMBER 0X28 // // >
#endif
INPUT_A_NUMBER后面可以输入想要的数值8.假如输入的值要限定范围,则要使用标签来修饰,例如限定的输入是0到16之间,则在sdk_config.h中输入
以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80// INPUT_A_NUMBER // #define TEST_NUMBER 0x10 // // >
#endif
当INPUT_A_NUMBER后面输入的值不在0~16之间,则会自动转换成最小或最大值9.如果输入的值是某个数的倍数,则可以使用这种标签形式,min为最小值,max为最大值,step为步进数,
例如,输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80// INPUT_A_NUMBER // #define TEST_NUMBER 0x02 // // >
#endif
实例中INPUT_A_NUMBER输入的值只能是2的倍数才有效10. 如何使标签的值做成下拉列表呢,需要使用,...之类的标签来实现,例如,输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80 // INPUT_A_NUMBER // #define TEST_NUMBER 0x02
// TEST_LIST_TABLE // 0 // 1 // 2 #deinf TEST_LIST_NUMBER 0 // // >
#endif
实例中TEST_LIST_TABLE后面将有3个选项的下拉列表可选择11.如果下拉列表控制指定的某一位,则需要使用 0 1等形式,例如,输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80 // INPUT_A_NUMBER // #define TEST_NUMBER 0x02
// TEST_LIST_TABLE // 0 // 1 // 2 #deinf TEST_LIST_NUMBER 0
// TEST_LIST_TABLE_LIMIT
// 0 1
#define TEST_LIST_NUMBER_LIMIT 0x00
// // >
#endif
TEST_LIST_TABLE_LIMIT如果选择1,则TEST_LIST_NUMBER_LIMIT值变成0x8012.如果是一个32位的值只需要8位,那么使用 0 1 2的形式实现,例如,输入以下内容
后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80 // INPUT_A_NUMBER // #define TEST_NUMBER 0x02
// TEST_LIST_TABLE // 0 // 1 // 2 #deinf TEST_LIST_NUMBER 0
// TEST_LIST_TABLE_LIMIT
// 0 1
#define TEST_LIST_NUMBER_LIMIT 0x00
// TEST_BIT0_BIT7
// 1 2 3 #define TEST_BIT0_BIT7_NUMBER 255
// // >
#endif
TEST_BIT0_BIT7 的3个选项可改变TEST_BIT0_BIT7_NUMBER的值13. 输入字符串,使用标签,例如,输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80 // INPUT_A_NUMBER // #define TEST_NUMBER 0x02
// TEST_LIST_TABLE // 0 // 1 // 2 #deinf TEST_LIST_NUMBER 0
// TEST_LIST_TABLE_LIMIT
// 0 1
#define TEST_LIST_NUMBER_LIMIT 0x00 // TEST_BIT0_BIT7
// 1 2 3 #define TEST_BIT0_BIT7_NUMBER 255// TEST_STRING #define STRING_VAL "test"
// // >
#endif
TEST_STRING输入的字串将会修改到STRING_VAL中定义的值14. 如何限定字串的长度呢,使用的标签形式来实现,例如,输入以下内容后保存
#ifndef SDK_CONFIG_H #define SDK_CONFIG_H
// >\n
// TEST_HEAD
// TEST_ENABLE #define TEST_BIT0 1 //
// TEST_ENABLE_BIT2 // this is enable bit 2 #define TEST_BIT2 4 //
// TEST_SINGLE_ENALBE #define TEST_SINGLE 1 // TEST_SINGLE_BIT7_ENALBE #define TEST_SINGLE_BIT7 0x80 // INPUT_A_NUMBER // #define TEST_NUMBER 0x02
// TEST_LIST_TABLE // 0 // 1 // 2 #deinf TEST_LIST_NUMBER 0
// TEST_LIST_TABLE_LIMIT
// 0 1
#define TEST_LIST_NUMBER_LIMIT 0x00 // TEST_BIT0_BIT7
// 1 2 3 #define TEST_BIT0_BIT7_NUMBER 255 // TEST_STRING #define STRING_VAL "test"// TEST_STRING_LIMIT #define STRING_LIMIT_VAL "Hello" // // >
#endif
TEST_STRING_LIMIT后面输入的值将限定5个字符长度