keil的Use Configuration Wizard in Context Menu功能

  • 目的

            为了能快速地实现宏定义的可视化管理及使用其修改数值项

  • 以下使用nrf52832为例来新建工程进行演示

step 1:

        新建一个工程,工程名为test,然后点保存

step 2:

     选择nRF52832_xxAA设备类型,然后点OK键确定

step 3:

          选择勾上CORE 5.0.2和Startup这两个选项,然后点击OK键确定

step 4:

        新键一个main.c文件并加入到工程,加入nrf_52.h头文件,并输入以下代码后编译

step 5:

     新建一个sdk_config.h,并加入工程,然后输入以下内容

  • 现在演示Use Configuration Wizard in Context Menu这个功能

      step 1:

         在sdk_conf.h的文件头部加入// <<< Use Configuration Wizard in Context Menu >>>\n和文件的未尾加

      入// <<< end of configuration section >>>这两行,来告诉keil这是一个配置向导菜单的开始与结束声明

step 2:

          关闭工程,然后再次打开工程,sdk_config.h中在keil下方会多次一个Configuration Wizard选项,点击此选项

step 3:

   1. 上面配置内没有任何东西,现在来讨论<h></h>这对标签,这对标签是声明一个标题头,跟随在<h>后面的内容将会

    被当成标题头显示在配置选项卡中,例如声明一个TEST_HEAD,在sdk_config.h中的// <<< Use Configuration Wizard in

      Context Menu >>>\n的后面输入以下内容后保存

 #ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// </h>

// <<< end of configuration section >>>

#endif                         

             配置选项卡中将会多出一个标题头TEST_HEAD

2.<e>和</e>这个标签是一个单选开关,作用是开启或关闭一位选项,跟随在<e>后面的内容将作为单选开关的描述内容,

例如,在TEST_HEAD标题组中输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// </h>
// <<< end of configuration section >>>

#endif                

                               TEST_ENABLE后面将会多出一个单选框

3.如果开启的值不是1和0,而是其它的位,假如要开启或关闭第2位,那么此时使用<e.n></e>这组标签,其中n表示第几位,

例如,在sdk_config.h中输入以下内容后保存

  

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
#define TEST_BIT2           4
// </e>

// </h>
// <<< end of configuration section >>>

#endif                         

          TEST_ENABLE_BIT2多出一个单选框,TEST_BIT2的取值是0和4

4. <i>这个标签是信息提示,使用这个标签,当鼠标停留在当前的条目的时候可以显示提示信息,提示<i>后面的内容,这个标

 签是单独的一个标签,不是成对出现的,例如,输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>
// </h>
// <<< end of configuration section >>>

#endif           

          当鼠标放在TEST_ENABLE_BIT2上后会弹出一个提示信息

5. <q>这个标签是单选不分段标签,这个标签也是单独的,没有成对出现,这个和<e></e>标签有点相似,首先都是单选框标

 签,不同的是<q>不分段,<e></e>是可以分段,例如输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1

// </h>
// <<< end of configuration section >>>

#endif      

      TEST_SINGLE_ENALBE在TEST_ENABLE_BIT2的分段下面,TEST_SINGLE_ENALBE下没有任何分组

6. 如果不分段单选标签要指定某一位,那么使用<q.n>来定义,n表示第几位,例如要开启或关闭第7位,则输入以下内容后

 保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80

// </h>
// <<< end of configuration section >>>

#endif
            TEST_SINGLE_BIT7_ENALBE单选框的开启或关闭,使TEST_SINGLE_BIT7 的取值是0和0x80两个值

7. <o>这个标签是输入或选择数值,例如,输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
#define TEST_NUMBER   0X28

// </h>
// <<< end of configuration section >>>

#endif        

                      INPUT_A_NUMBER后面可以输入想要的数值

8.假如输入的值要限定范围,则要使用<min-max>标签来修饰,例如限定的输入是0到16之间,则在sdk_config.h中输入

以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
// <0-16>
#define TEST_NUMBER   0x10

// </h>
// <<< end of configuration section >>>

#endif         

当INPUT_A_NUMBER后面输入的值不在0~16之间,则会自动转换成最小或最大值

9.如果输入的值是某个数的倍数,则可以使用<min-max:step>这种标签形式,min为最小值,max为最大值,step为步进数,

例如,输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
// <0-16:2>
#define TEST_NUMBER   0x02

// </h>
// <<< end of configuration section >>>

#endif                      

          实例中INPUT_A_NUMBER输入的值只能是2的倍数才有效

10. 如何使<o>标签的值做成下拉列表呢,需要使用<0=>,<1=>...<n=>之类的标签来实现,例如,输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
// <0-16:2>
#define TEST_NUMBER   0x02

// <o> TEST_LIST_TABLE
// <0=>     0
// <10=>   1
// <100=>  2
#deinf TEST_LIST_NUMBER 0

// </h>
// <<< end of configuration section >>>

#endif               

       实例中TEST_LIST_TABLE后面将有3个选项的下拉列表可选择

11.如果下拉列表控制指定的某一位,则需要使用<o.n> <0=> 0 <1=> 1等形式,例如,输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
// <0-16:2>
#define TEST_NUMBER   0x02

// <o> TEST_LIST_TABLE
// <0=>    0
// <10=>   1
// <100=>  2
#deinf TEST_LIST_NUMBER 0

//        <o.7> TEST_LIST_TABLE_LIMIT

//         <0=> 0      <1=> 1

#define TEST_LIST_NUMBER_LIMIT 0x00

// </h>
// <<< end of configuration section >>>

#endif

     TEST_LIST_TABLE_LIMIT如果选择1,则TEST_LIST_NUMBER_LIMIT值变成0x80

12.如果是一个32位的值只需要8位,那么使用<0.0..7> <0=> 0 <1=> 1 <255=> 2的形式实现,例如,输入以下内容

后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
// <0-16:2>
#define TEST_NUMBER   0x02

// <o> TEST_LIST_TABLE
// <0=>    0
// <10=>   1
// <100=>  2
#deinf TEST_LIST_NUMBER 0

//        <o.7> TEST_LIST_TABLE_LIMIT

//         <0=> 0      <1=> 1

#define TEST_LIST_NUMBER_LIMIT 0x00


//        <o.0..7> TEST_BIT0_BIT7 

//         <0=> 1      <1=> 2  <255=> 3
#define  TEST_BIT0_BIT7_NUMBER  255

// </h>
// <<< end of configuration section >>>

#endif

            TEST_BIT0_BIT7 的3个选项可改变TEST_BIT0_BIT7_NUMBER的值

13. 输入字符串,使用<s>标签,例如,输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
// <0-16:2>
#define TEST_NUMBER   0x02

// <o> TEST_LIST_TABLE
// <0=>    0
// <10=>   1
// <100=>  2
#deinf TEST_LIST_NUMBER 0

//        <o.7> TEST_LIST_TABLE_LIMIT

//         <0=> 0      <1=> 1

#define TEST_LIST_NUMBER_LIMIT 0x00
//        <o.0..7> TEST_BIT0_BIT7 

//         <0=> 1      <1=> 2  <255=> 3
#define  TEST_BIT0_BIT7_NUMBER  255
// <s>  TEST_STRING
#define STRING_VAL  "test"

// </h>
// <<< end of configuration section >>>

#endif

       TEST_STRING输入的字串将会修改到STRING_VAL中定义的值  

14. 如何限定字串的长度呢,使用<s.n>的标签形式来实现,例如,输入以下内容后保存

#ifndef SDK_CONFIG_H
#define SDK_CONFIG_H

// <<< Use Configuration Wizard in Context Menu >>>\n

// <h> TEST_HEAD

// <e> TEST_ENABLE
#define TEST_BIT0           1
//</e>

// <e.2> TEST_ENABLE_BIT2
//<i> this is enable bit 2 
#define TEST_BIT2           4
// </e>

// <q> TEST_SINGLE_ENALBE
#define TEST_SINGLE     1
// <q.7> TEST_SINGLE_BIT7_ENALBE
#define TEST_SINGLE_BIT7 0x80
// <o> INPUT_A_NUMBER
// <0-16:2>
#define TEST_NUMBER   0x02

// <o> TEST_LIST_TABLE
// <0=>    0
// <10=>   1
// <100=>  2
#deinf TEST_LIST_NUMBER 0

//        <o.7> TEST_LIST_TABLE_LIMIT

//         <0=> 0      <1=> 1

#define TEST_LIST_NUMBER_LIMIT 0x00
//        <o.0..7> TEST_BIT0_BIT7 

//         <0=> 1      <1=> 2  <255=> 3
#define  TEST_BIT0_BIT7_NUMBER  255
// <s>  TEST_STRING
#define STRING_VAL  "test"
// <s.5>  TEST_STRING_LIMIT
#define STRING_LIMIT_VAL  "Hello"

// </h>
// <<< end of configuration section >>>

#endif

               TEST_STRING_LIMIT后面输入的值将限定5个字符长度

 

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风雨依依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值