Keil配置向导——在keil中使用图形化界面编程
配置向导是集成在编辑器中通过图形控制来配置汇编语言、C/C++或初始化文件的应用程序。文件必须以特定方式书写来调用配置向导,并且必须在文件的前100行中包含以下声明。
<<< Use Configuration Wizard in Context Menu >>>
以下可选文本表示配置向导部分的结束。
<<< end of configuration section >>>
如下图所示,Option选项可以按树状结构表示,并且可以带有解释性的工具提示;Value甚至可以在下拉列表中封装数据。
在配置向导书写过程中,需要用到以下几条命令:
项 |
文本 |
描述 |
<h> |
是 |
标题: 紧随其后的选项归为同一组。 |
<e>§ |
是 |
可以使能的标题: 紧随其后的选项归为一组,可以通过复选框使能。 |
<e.4>§ |
是 |
可以使能的标题: 修改一个指定的位(例如bit 4)。 |
</h> or </e> |
是 |
标题或使能的结束符。 |
<i> |
是 |
上一条项目的工具提示。 |
<q>§ |
是 |
一个将bit值显示为复选框的选项。 |
<o>§ |
是 |
创建一个能够选择或输入数据的选项 |
<o.4..5>§ |
是 |
修改选项中数字表示的位(例如bit 4与bit 5)。 |
<o.4>§ |
是 |
修改数字表示的单个位。 |
<s>§ |
是 |
字符串输入选项。 |
<s.10>§ |
是 |
字符串输入选项,限制长度(10个字符) |
修改器 |
|
描述 |
<0-31> |
否 |
操作域的取值范围 |
<0-100:10> |
否 |
操作字段的取值范围,步进为10(输入必须为10的整数倍) |
<0x40-0x1000:0x10> |
否 |
十六进制的取值范围 |
<0=> |
是 |
用于创建可供选择的值或文本 |
<#+1> <#-1> |
否 |
在数值添加到字段中之前修改(加,减,乘,除)数值 |
注意:
通常情况下,紧跟着注释部分的下一个数或字符串将被修改。用§标记的命令可以跟随一个跳行值。例如:
<o1>
跳行值用来跳过一些命令。以上示例修改紧跟着注释的第二个数。
空白字符在命令或调节器中被忽略。
命令详解
需要明确,配置选项的所有内容以注释语句的形式出现在源文件中。
例如配置向导的起始
//***<<< Use Configuration Wizard in Context Menu >>>***
配置向导的结束
//***<<< end of configuration section >>>***
1、<h>与</h>命令
这两条命令之间的内容组成一个可折叠的组,形式如下:
// <h>模数转换(ADC)
// </h>
2、<e>和</e>命令
该命令具备<h>与</h>的功能,但是还带有复选框使能的功能。形式如下:
// <e0.7>允许ADC模块
// </e>
该示例中,<e0.7>中的0.7(此值即为跳行值)表示该命令控制注释行后的第0个数值的bit 7。如果不带跳行值,则默认更改第0个值的bit 0。
3、<i>命令
该命令为上一行的注释内容提供一个浮动的提示信息。示例如下:
// <h>转换时间=12*tad+(TS+1)*tad
// <i>详细内容请参考SH79F3212数据手册
// </h>
4、<q>命令
该命令将一个bit位用复选框的形式显示,示例如下:
// <q2.0>ADC通道配置 配置AN0为AD通道
5、<o>命令
创建一个能够选择或输入数据的选项,例如:
// <o1.5..7>ADC时钟周期 <0=>tad=2tsys
// <1=>tad=4tsys
// <2=>tad=6tsys
// <3=>tad=8tsys
// <4=>tad=12tsys
// <5=>tad=16tsys
// <6=>tad=24tsys
// <7=>tad=32tsys
// <e0.5>允许数字比较功能
// <o4.0..7>ADDL = <0x0-0xFF>
// <o5.0..7>ADDH = <0x0-0xFF>
// </e>
// <h>基准源开关
// <o3.7>基准源开关位
// </h>
此时其具有<e>命令的功能。
// <o> Program Entry Point
PC = 0x04000000;
该值可以随意修改。
6、<s>命令
用来创建一个字符串修改选项,有两种用法,可以不限制长度,也可以限制为指定长度,示例如下:
// <s> Change ID
// <s1.30> Change Password String
#define ID "My User ID"
char pw[] = "My Password";
黑色框内的内容可以进行更改。
7、修改器<0-31>
括号内为十进制数,表示被修改值的取值范围,该修改器通常以<o>配合使用。常见格式如下:
// <o> ADDL <1-255>
修改结果为:
ADDL = 7;
当然,<o>命令可以指定一个跳行值,用来操作其他数字或某个数字的指定位。例如:
<o1>、<o1.4..7>等,来修改指定的部分。
8、修改器<0-100:10>
与上一个修改器功能相同,但是增加了一个步进限制,必须为冒号后面值的整数倍。器取值方式遵循如下规则:
- 在取值范围内时向下取整;
- 超过取值范围则取其极限值;
例如:
// <o> ADDL <1-255:5>
由于限制输入取值范围为1-255,若输入4,则向下取值为1,若输入6-9,则向下取值为5,若输入小于1,则向上取值为1,若输入大于256,则向下取值为255。
修改器<0x40-0x1000:0x10>
该修改器可以参考十进制修改器。不再赘述。
9、修改器<0=>
括号内“=”前的值为写入指定数据段的值,该修改器通常与<o>命令配合使用,创建可选的下拉列表。书写格式如下:
// <o1.5..7>ADC时钟周期 <0=>tad=2tsys
详细内容可以参考“<o>命令”的示例内容。
10、修改器<#+1><#-1><#*8><#/3>
该修改器通常与<1-31>等数值输入型修改器配合使用,在输入值的基础上进行“加、减、乘、除”运算。书写格式如下:
// <o> ADDL <1-255:5> <#+3>
配置向导使用注意事项:
- 跳行值表示的是修改第n个数值或字符串,而不是第n行的数值或字符串,对于单条语句操作多个数值的情况要特别注意,例如:
// <e>一个测试项
// <o1> ADDL <0x00-0xFF:0x01>
// </e>
最终产生的代码如下:
ADDL = 0x01|0x25;
<e>与</e>创建一个可以选择使能的项,勾选后,第一个数值被修改为0x01,<o1> ADDL <0x00-0xFF:0x01>命令中输入0x25,将第二个数值修改为0x25。