本文主要是介绍KEIL-MDK的配置向导Configuration Wizard,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自https://blog.csdn.net/booksyhay/article/details/82802553
作用:可在图形化参数配置界面修改宏的值
问题
什么是配置向导?它有什么作用?
回答
配置向导是μVision最近添加的功能。它支持汇编器,C或调试器初始化文件的菜单驱动配置。配置向导使用嵌入到配置文件注释中的控件项来构建这些菜单。
MDK-ARM工具广泛使用脚本文件,这些菜单为用户提供了一种显示和修改脚本和初始化文件设置的简便方法。
先看看图片,有个直观的感受:
就是在代码里面嵌入一些特定的注释,KEIL-MDK可以将其“翻译”为图形用户界面,以便在其中方便地更改配置。
启用配置向导
1,注释中必须包括以下特定内容,才能启用配置向导。该注释必须放在代码文件的前100行以内。
// <<< Use Configuration Wizard in Context Menu >>>
2,可以添加以下注释 ,以结束配置向导。此项是可选的。
// <<< end of configuration section >>>
分组语法
分组标题
使用和来标识一个分组。在配置向导中可以折叠。
<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>
例如:
// <e1.5> WSE: Enable Wait State Generation
// <o1.2..4> NWS: Number of Standard Wait States <1-8><#-1>
// </e>
实现的效果为:当勾选标题行时,组内的内容正常显示,可以编辑:
当取消选择标题行时,组内的内容变灰,不能编辑:
帮助提示
表示对上一个配置项的提示。可以有多行。
// <i> Use MY_CPU_VARIANT, and set the include file
显示效果为:
编辑配置项的值
默认情况下,可以在图形用户界面中更改相应的注释项后面的第一个数值。 例如,在注释中配置:
// <o> Program Entry PointPC = 0x04000000;
实现的效果为:
图形用户界面中的项目标题为后面的文本内容,修改项为注释后面的第一个数字。
可以在图形用户界面中编辑该配置项的值,比如,改为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
由于后面有个数字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:
数据项的编辑类型
数值型:
数值型的修改项可以指定数值的范围:
可以指定数值范围中的步长:
则表示有效范围为: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)
选择型:
例如,
// <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> Change ID
// <s1.30> Change Password String
#define ID "My User ID"
char pw[] = "My Password";
其中<s1.30>表示跳过一个字符串(编辑第二个字符串”My Password"),最大长度为30,显示效果为:
代码型:
// <c1> Use MY_CPU_VARIANT
// <i> Use MY_CPU_VARIANT, and set the include file
#define MY_CPU_VARIANT
#include "MyCpuVariant.h"
// </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 PointPC = 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 >>> ***
参考资料:
keil 的 配置向导 configuration wizard (转)
这篇关于KEIL-MDK的配置向导Configuration Wizard的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!