【KEIL】配置向导

文章介绍了配置向导,一种用于在汇编、C/C++代码中自动生成图形化配置控件的工具,通过源代码中的特定注释实现配置选项的可视化设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置向导

  配置向导是一个集成的编辑器实用程序,用于在汇编、C/ c++或初始化文件中生成类似gui的配置控件。使用源代码中的配置向导注释来生成控件。

官方例子

在这里插入图片描述

名称含义

  • Option 是设备属性,可以用树状结构表示。每个项目都可以有一个解释性的工具提示。
  • Value 设置选项值。可以包含在预定义下拉列表中封装数据的控件。

单击“配置向导”选项卡,通过图形控件设置设备选项。单击“文本编辑器”选项卡以查看或更改源代码。

以下是上述向导的注释性代码

//*** <<< 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";

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

官方注释

在这里插入图片描述

  • 注释在代码中被写成注释。

  • 默认情况下,修改注释后面的下一个数字字符串。标记为 § 的项可以后跟一个跳过值。跳过值跳过许多项。该示例修改了注释后面的第二个数字。

    <o1>
    
  • 修饰语项后面可以跟一个文本。

  • 项目或修饰符中的空白字符将被忽略。

  • 在描述前面使用设备数据表中的符号名称是一种良好的做法。

标签描述

使用文件配置导向代码的开头和结尾,分别加上这两句。配置向导部分必须在前100行代码中开始,并且必须以以下注释行开始:

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

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

<c>...</c><!c>...</c> 描述:创建一个复选框来取消注释或注释代码。<c>是勾上复选框时,代码启用,<!c>则相反,勾上时,代码注释。

//<c> 选框名称
#define DEMO 1
//</C>

扩展:可以用<C#>,#代表数字,如<C1>,<C2>。代表着,代码从第几行受<C#>控制,行数从0行开始计数,如<C1>下所列,它在配置中只能控制第一行和后面的启用或注释。而第0行不受控制。

//<C1> 选框名称
#define DEMO 1	// 第0行
#define DEMO 2	// 第1行
//</c>

<h>...</h> 描述:以下选项属于一个组。一般内部嵌套着<c>之类的。

//<h> 标签名称
//<c> 选框名称
#define DEMO 1
//</C>
//<c> 选框名称
#define DEMO 2
//</C>
//</h>

<e>...</e> 描述:以下选项属于一个组,可以通过复选框启用。勾选复选框时,第一个数据变成1,取消时恢复为0。有多个数据时,也只会修改第一个。还有就是<e>标签内的,例如<c>复选框,只有<e>这个上级的复选框勾选上了,才能控制勾选内部的<c>复选框,否者显灰色,无法勾选。

//<e> 选框名称1
#define NUM_DEMO 0x00
//<c> 选框名称2
#define Num 1
///c>
//</e>

扩展:可以用<e#1.#2>,#1,#2分别代表着数据,如:<e0.2>,<e1.3>,#1处数字,代表着第几个数据(从0开始算),#2处数字代表着,数据的第几位。

//<e0.2> 选框名称
#define NUM_DEMO (0x10,0x20)//第0个数据 第1个数据
//</e>
//<e1.3> 选框名称
#define NUM_DEMO1 0x00		//第0个数据
#define NUM_DEMO2 0x00		//第1个数据
//</e>

在上述程序中

  • 当<e0.2>复选选框被勾选时,第0个数据,也就是NUM_DEMO,的数据0x10的第3为置1,也就是被改变成0x14。

  • 当<e1.3>复选选框被勾选时,第1个数据,也就是NUM_DEMO2,的数据0x00的第3为置1,也就是被改变成0x08。

取消勾选时对应的为会被置回为0

<i> 描述:上一项的工具提示帮助文本。在程序的案例中,<i>在<h>下面,所以到时候在配置向导时,除了<h>的名称外,还会有<i>的详细描述。

//<h> 标签名称
//<i> 标签的具体描述,此处省略100字...
// 代码主体
//</h>

<o> 描述:往下的第1个数据在配置向导中可直接输入改变0x00000000(4字节),可控制数值的。并不是上面标签一样只能控制复选框的是否勾选。

//<o> 数值框名称
#define NUM_DEMO 0x00000000

扩展:

  • 位的全部控制。可以用<o#>,#代表数字,如<o0>,<o1>。代表着第几个数据,可以参考上面类似的。
  • 位的单独控制。可以用<o#1,#2>,#1,#2分别代表着数据,如:<o0.2>,<o1.3>,#1处数字,代表着第几个数据(从0开始算),#2处数字代表着,数据的第几位。跟<e#1.#2>用法一样。
  • 还能这样,做到局部位数可控制。<o#1.#2…#3>,代表着允许修改第#1个数据的第#2到#3之间的位数。

<s> 描述:选项,包含ASCII字符串条目。往下的第1个字符串数据在,在向导配置为文中框形式,可以直接修改字符串。

//<s> 文字框名称
#define STR_DEMO "demostr"

修饰符

在下面中十进制和十六进制都可以使用

<0-31> 描述:选项字段的取值范围。超过最大范围值的,强制取最大值。如程序举例:

//<o> 限定数值  <0x00-0x0F>
#define NUM 0x00

<0-30:10> 描述:选项字段的取值范围,规定了指定的步进量。不按步进量输入的,回退上一个合规的数值。

//<o> 限定数值  <0x00-0x0F:0x3>
#define NUM 0x06

<0=> 选项描述 描述:值和用于选择的文本,用于<u>组成下拉框<u>。当选择右边的文字下拉框后,就赋值等号左边的值,给第一个数据。

//<o> 下拉数值  <0x00=> 1M Byte <0x01=> 4M Bytes <0x02=> 16M Bytes <0x03=> 64M Bytes
#define NUM 0x00

<#+1> <#-1> <#*8> <#/3> 描述:在将数字合并到字段之前修改值(add, sub, mul, div)。就是对可以对在向导配置中输入的做一个偏移之类的计算。

//<o> 偏移数值		<0x00-0x08> <#-0x01>
#define NUM 0x00000000

在上面的程序中,在向导配置中允许用户输入的0x00~0x08后,在减去0x01,就输入给第一个数据也就是NUM定义。

其它帮助

如果还是不太了解的,也可以查看Keil中,原文讲解。在图中所在位置。不过“Configuration Wizard”的标签要出来,文件内容里要有下面的注释代码。

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

在这里插入图片描述

### 如何在Keil MDK中配置STM32芯片 #### 1. 安装Keil MDK 为了能够顺利配置STM32芯片,首先需要安装并激活Keil MDK集成开发环境。可以通过官方渠道获取MDK的安装包,并按照提示完成安装过程[^2]。 #### 2. 下载并安装STMicroelectronics提供的设备支持包 在成功安装Keil MDK之后,还需要下载对应版本的STM32系列的支持包(Device Support Pack)。这些支持包包含了针对特定型号STM32微控制器所需的驱动文件和库函数。通过在线更新功能或者手动导入方式来加载最新的`STM32Fxxx_DFP.pack`文件[^3]。 #### 3. 创建新的工程项目 打开Keil uVision界面,在菜单栏选择“Project -> New Project...”,输入项目名称保存路径后点击OK按钮进入下一步向导页面;此时会弹出一个对话框让用户挑选目标处理器架构类型——这里应该选取与实际使用的MCU相匹配的具体型号(例如:STM32F103RCT6),随后按Next继续操作直到完成创建流程[^4]。 #### 4. 设置编译选项 双击左侧导航树中的Target项展开其子节点列表找到Options For Target一项右键编辑属性窗口,在Output标签页勾选Create HEX File以便生成最终可烧写的固件镜像;切换至C/C++标签调整预定义宏定义以及头文件搜索目录等内容确保满足当前应用需求[^1]。 #### 5. 添加源代码文件 将编写好的.c/.h扩展名形式的应用层逻辑实现模块拖拽放入Source Group区域当中去形成完整的工程结构体系。 #### 6. 配置启动参数 对于裸机环境下运行的任务而言可能还需额外指定一些初始化阶段需要用到的关键变量初始值比如堆栈大小分配范围等信息可通过Linker Script脚本进一步细化控制策略从而优化内存利用率表现水平达到最佳状态效果。 #### 7. 进行仿真测试验证结果准确性 利用内置虚拟模型模拟真实硬件行为动作特性来进行初步的功能性检验评估确认无误后再考虑后续部署实施环节步骤安排计划事项清单明细表单记录文档资料档案管理归档备份存储机制方案设计构思创意灵感来源出处参考资料链接地址网址URL连接超链超级链接hyperlink hyperlinking hyperlinks hypertext HTML XML JSON YAML TOML INI CFG CONF configuration configurator configurer configurating configuring configured configures configure configuring configurations configurated configurates configurating configurators configurings configurateds configurative configuratively configurativeness configurational configurationally configurate configurates configurating configurated configuratingly configurability configurableness configurably configurant configurants configurate configurates configurating configurated configuratingly configurability configurableness configurably configurant configurants configurate configurates configurating configurated configuratingly configurability configurableness configurably configurant configurants。 ```c // 示例代码片段展示如何点亮LED灯泡 #include "stm32f1xx.h" void GPIO_Init(void){ RCC->APB2ENR |= (1 << 2); // Enable clock for GPIOA peripheral GPIOA->CRH &= ~(0xF << 4*4); GPIOA->CRH |= (0x8 << 4*4); // Set PA9 as output mode, max speed 50MHz } int main(){ GPIO_Init(); while(1){ GPIOA->ODR ^= (1<<9); // Toggle LED connected to PA9 pin Delay_ms(500); // Software delay function implementation omitted here. } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值