KEIL-MDK的配置向导Configuration Wizard

问题

什么是配置向导?它有什么作用?

回答

配置向导是μVision最近添加的功能。它支持汇编器,C或调试器初始化文件的菜单驱动配置。配置向导使用嵌入到配置文件注释中的控件项来构建这些菜单。

MDK-ARM工具广泛使用脚本文件,这些菜单为用户提供了一种显示和修改脚本和初始化文件设置的简便方法。

 

先看看图片,有个直观的感受:

Configuration Wizard Example

就是在代码里面嵌入一些特定的注释,KEIL-MDK可以将其“翻译”为图形用户界面,以便在其中方便地更改配置。

 

启用配置向导

1,注释中必须包括以下特定内容,才能启用配置向导。该注释必须放在代码文件的前100行以内。

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

2,可以添加以下注释 ,以结束配置向导。此项是可选的。

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

 

分组语法

分组标题

使用<h>和</h>来标识一个分组。在配置向导中可以折叠。

<h>
...
</h>

例如:

// <h> External Bus Interface (EBI)
//   <e1.13> Enable Chip Select 0 (CSR0)
//   </e>
//   <e1.13> Enable Chip Select 1 (CSR1)
//   </e>
// </h>

实现的效果为:

点击“+”可以展开,展开后的效果为:

 

使能标题

使用<e>和</e>来标识一个分组,并且该分组可以整体被使能/禁止。在配置向导中既可以折叠,也可以使能/禁止。

<e>
...
</e>

例如:

//     <e1.5>      WSE: Enable Wait State Generation
//       <o1.2..4>   NWS: Number of Standard Wait States <1-8><#-1>
//     </e>

实现的效果为:当勾选标题行时,组内的内容正常显示,可以编辑:

当取消选择标题行时,组内的内容变灰,不能编辑:

 

帮助提示

<i> 表示对上一个配置项的提示。可以有多行。

// <i> Use MY_CPU_VARIANT, and set the include file

显示效果为:

 

编辑配置项的值

默认情况下,可以在图形用户界面中更改相应的注释项后面的第一个数值。 例如,在注释中配置:

// <o> Program Entry Point
  PC = 0x04000000;

实现的效果为:

图形用户界面中的项目标题为<o>后面的文本内容,修改项为注释后面的第一个数字。

可以在图形用户界面中编辑该配置项的值,比如,改为0x04008000

编辑后,代码中的值也会随即改变。

 

跳过N个值

注释中也可以配置为“跳过”接下来的N个值。比如:

//     <o1.9..11>  TDF: Data Float Output Time <0-7>
//                 <i> Number of Cycles Added after the Transfer
//   </e>
  _WDWORD(0xFFE00000, 0x01002489);   // EBI_CSR0: Flash

由于<o>后面有个数字1,则表示它编辑的数字要先跳过1个,即,此时编辑后,受影响的值不是_WDWORD函数的第一个参数,而是第二个参数。

 

编辑某些位

比如上例中,q1.4中的“.4"表示编辑数值的第4位(从bit0开始)。

也可以编辑连续多个位。比如下图中<o1.9..11>中的”9..11“则代表编辑数字的第9位~第11位。

//     <o1.9..11>  TDF: Data Float Output Time <0-7>
//                 <i> Number of Cycles Added after the Transfer

  _WDWORD(0xFFE00004, 0x04003485);   // EBI_CSR1: RAM

在图形用户界面中,把0x02改为0x03:

代码中的数值也由0x04003485变为0x04003685:

 

数据项的编辑类型

数值型:<o>

数值型的修改项可以指定数值的范围

可以指定数值范围中的步长则表示有效范围为:0x00000000 ~ 0xFFF0 0000,并且以0x10 0000为单位进行步进。显示 为十六进制。

可以设定为枚举型

显示效果为:

在使用用户输入的数字之前,可以对输入项进行运算,再合并到被修改项。支持加减乘除4种运算。格式举例:

  • <#+1>
  • <#-1>
  • <#*8>
  • <#/5>

例如:

表示,NWS: Number of Standard Wait States的用户可输入范围为1-8(小于1则取值为1,大于8则取值为8),最终合并到数值之前需要将用户输入的数字减去1。

比如,输入8时:

代码中的数字变为0x040036BD:其中第2~4位为7(0b111) (0xBD = 0b1011 1101)

 

选择型:<q>

例如,

//   <q1.4>        DRP: Data Read Protocol
//                      <0=> Standard Read
//                      <1=> Early Read
  _WDWORD(0xFFE00024, 0x00000010);   // EBI_MCR:  Data Read Protocol

在图形用户界面中的显示效果为一个”复选框“: 。选中为1,取消选中为0.

取消勾选后,_WDWORD函数的第二个函数由0x00000010变为0x00000000了。

 

字符串型:<s>

// <s> Change ID
// <s1.30> Change Password String
#define ID  "My User ID"
char pw[] = "My Password";

其中<s1.30>表示跳过一个字符串(编辑第二个字符串”My Password"),最大长度为30,显示效果为:

 

代码型:<c></c>

// <c1> Use MY_CPU_VARIANT
// <i> Use MY_CPU_VARIANT, and set the include file
#define MY_CPU_VARIANT
#include "MyCpuVariant.h"
// </c>

显示效果为:

取消勾选后,代码内容变为:

还可以使用<!c>和</c>语法来标记代码段,与<c>...</c>的区别是,勾选后代码被注释;取消勾选后代码有效。

 

参考

官方帮助:

http://www.keil.com/support/man/docs/uv4/uv4_ut_configwizard.htm

 

例程全部代码:

//*** <<< Use Configuration Wizard in Context Menu >>> ***


FUNC void Setup (void) {

// <h> External Bus Interface (EBI)

//   <e1.13> Enable Chip Select 0 (CSR0)
//     <o1.20..31> BA: Base Address <0x0-0xFFF00000:0x100000><#/0x100000>
//                 <i> Start Address for Chip Select Signal
//     <o1.7..8>   PAGES: Page Size      <0=> 1M Byte    <1=> 4M Bytes
//                                       <2=> 16M Bytes  <3=> 64M Bytes
//                 <i> Selects Active Bits in Base Address
//     <o1.0..1>   DBW: Data Bus Width   <1=> 16-bit     <2=> 8-bit
//     <o1.12>     BAT: Byte Access Type <0=> Byte-write
//                                       <1=> Byte-select
//     <e1.5>      WSE: Enable Wait State Generation
//       <o1.2..4>   NWS: Number of Standard Wait States <1-8><#-1>
//     </e>
//     <o1.9..11>  TDF: Data Float Output Time <0-7>
//                 <i> Number of Cycles Added after the Transfer
//   </e>
  _WDWORD(0xFFE00000, 0x010024A9);   // EBI_CSR0: Flash

//   <e1.13> Enable Chip Select 1 (CSR1)
//     <o1.20..31> BA: Base Address <0x0-0xFFF00000:0x100000><#/0x100000>
//                 <i> Start Address for Chip Select Signal
//     <o1.7..8>   PAGES: Page Size      <0=> 1M Byte    <1=> 4M Bytes
//                                       <2=> 16M Bytes  <3=> 64M Bytes
//                 <i> Selects Active Bits in Base Address
//     <o1.0..1>   DBW: Data Bus Width   <1=> 16-bit     <2=> 8-bit
//     <o1.12>     BAT: Byte Access Type <0=> Byte-write
//                                       <1=> Byte-select
//     <e1.5>      WSE: Enable Wait State Generation
//       <o1.2..4>   NWS: Number of Standard Wait States <1-8><#-1>
//     </e>
//     <o1.9..11>  TDF: Data Float Output Time <0-7>
//                 <i> Number of Cycles Added after the Transfer
//   </e>
  _WDWORD(0xFFE00004, 0x040034A5);   // EBI_CSR1: RAM

//   <q1.4>        DRP: Data Read Protocol
//                      <0=> Standard Read
//                      <1=> Early Read
  _WDWORD(0xFFE00024, 0x00000010);   // EBI_MCR:  Data Read Protocol

  _WDWORD(0xFFE00020, 0x00000001);   // EBI_RCR:  Remap Command

// </h>

// <o> Program Entry Point
  PC = 0x04000000;

}

// <s> Change ID
// <s1.30> Change Password String
#define ID  "My User ID"
char pw[] = "My Password";


/*********************************************************/
/*  Example for enabling and disabling code              */

// <c1> Use MY_CPU_VARIANT
// <i> Use MY_CPU_VARIANT, and set the include file
#define MY_CPU_VARIANT
#include "MyCpuVariant.h"
// </c>

// <!c1> Disable log
// <i> Disable log file generation
#define _USE_LOG
// </c>

// <c1>  Example of inconsistent comment
// <i> a mix of commented and uncommented lines in the block create an inconsistency

// This type of comment, mixed with uncommented lines, creates the inconsistency
/* You can use this type of comment without creating an inconsistency */

   do_whatever;              // adding this type of comment here is allowed

// </c>


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

配置向导注释说明:

项目 跳过 文本 描述
<c>§代码启用:创建一个复选框以取消注释或注释代码。当您禁用复选框时,所有行(包括带有空格的行)都会在第一个找到的字符处添加双斜杠(//)注释。配置向导中的红色文本表示不一致。不要嵌套此项目。
<!c>§代码禁用:创建一个复选框以注释或取消注释代码。当您启用复选框时,所有行(包括带有空格的行)都会在第一个找到的字符处添加双斜杠(//)注释。配置向导中的红色文本表示不一致。不要嵌套此项目。
</c> 以<c>或<!c>开头的代码启用/禁用块结束。
<h> 标题:以下选项属于一个组。
<e>§标题为启用:以下选项属于一个组,可以通过复选框启用。
<e.4>§标题为启用:修改特定位(在本例中为第4位)。
</h>或</e> 标题或启用结束。
<i> 前一项的工具提示帮助。
<q>§可通过复选框设置的位值选项。
<o>§带选择或数字输入的选项。
<o.4..5>§修改位范围(例如:位4到5)。
<o.4>§修改单个位(例如:位4)。
<s>§带ASCII字符串条目的选项。
<s.10>§带ASCII字符串条目的选项,大小限制为10个字符。
<0-31> 选项字段的值范围。
<0-100:10> 选项字段的值范围,步长为10。
<0x40-40x1000:0x10> 十六进制格式的值范围,步长为0x10。
<0=> 值和文本供选择。

<#+1>

<#-1>

<#*8>

<#/3>

 数字合并到字段之前的值修改(加,减,乘,除)。

 

µVision4µVision4µVision4µVision4 µVision4µVision4µVision4配置向导 (Configuration WizardConfiguration WizardConfiguration WizardConfiguration WizardConfiguration WizardConfiguration WizardConfiguration WizardConfiguration WizardConfiguration Wizard Configuration WizardConfiguration WizardConfiguration WizardConfiguration WizardConfiguration Wizard Configuration WizardConfiguration Wizard )是一个集成的编辑工具,它允许用户通过图形化界面配置 汇编 /C/C++ /C/C++ /C/C++/C/C++语言。该 语言。该 图形化配置界面非常类似于 图形化配置界面非常类似于 WebWebWeb网页的界面,甚至后台处理脚本也与 网页的界面,甚至后台处理脚本也与 网页的界面,甚至后台处理脚本也与 HtmlHtmlHtml 语言 十分接近。 下面将详细的解析图形化界设计与配置十分接近。 下面将详细的解析图形化界设计与配置十分接近。 下面将详细的解析图形化界设计与配置十分接近。 下面将详细的解析图形化界设计与配置十分接近。 下面将详细的解析图形化界设计与配置十分接近。 下面将详细的解析图形化界设计与配置需要说明的是,编写图形化配置界面时候代 需要说明的是,编写图形化配置界面时候代 需要说明的是,编写图形化配置界面时候代 需要说明的是,编写图形化配置界面时候代 需要说明的是,编写图形化配置界面时候代码是在程序的注释部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值