加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 一、MDK 的Configuration Wizard
    • 二、如何在 MDK 中启用Configuration Wizard
    • 三、Configuration Wizard的语法规则
    • 四、结语
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

教你使用 MDK(keil)实现可视化配置向导

2023/11/23
4624
阅读需 10 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

最近在开发 BMS 项目中,由于需要兼容很多电芯参数模型,同时还需要软件算法可以应对不同电芯以及应用场景,给用户提供高可配置型的功能,因此提供一个好的界面,让用户可以快速的配置基本模型和算法参数变得非常重要,今天来介绍一下我用 MDK 实现的方法。

一、MDK 的Configuration Wizard

Configuration Wizard翻译成中文可以叫做配置向导,它是由一些特殊规则的语法构成的,可以解释成图形化的配置菜单,在图形化界面中,可以很清晰的配置程序相关参数,而不需要在具体的代码中修改。

Configuration Wizard有点类似于Markdown原理,可以实现所见即所写,它采用注释的形式来构建菜单,在 MDK 中,它支持汇编、C/C++以及初始化文件(如.s文件)。如下图,先展示一张直观的配置界面,再从源码上来详细地介绍它的实现方法。

实现上图的源码:

/***************************************************                                    PACK 参数***************************************************/#if (1) /**Pack Information*/// <h>  Pack Infomation /************BATTERY_PACK_INFO*****************/// <o> Pack Cell Series Counts <4=> 4 <5=> 5 <6=> 6 <7=> 7 <8=> 8 <9=> 9 <10=> 10#define PACK_SERIES_COUNT      (10) //Pack串数=电压采样点数// <o> Pack Cell Parallel Counts <1=> 1 <2=> 2  <3=> 3 <4=> 4#define NUM_PARALLEL           (2)  //Pack并数// <o> Pack Temp Sensors Counts <1=> 1 <2=> 2  #define NUM_CELL_TEMP_SENSORS  (2)  //电芯温度采样点数
/********CURRENT SENSOR TYPE******************/// <o> Pack Current Sensors Resister(mR)  <1=> 1 <2=> 2  <4=> 4 <8=> 8#define DIVER_RESISTER         (4)  //电流采样电阻传感器
/*********AFE TYPE***************************/#define AFE_TYPE               (AFE_CG861XX_TYPE) //当前PCB使用的AFE的型号// </h>  

二、如何在 MDK 中启用Configuration Wizard

一般情况下,我们在.c或.h文件中的头部,使用注释的方式增加如下代码,就可以使用配置向导了,当然,我们只需要保证这段开启向导的注释语句在代码文件的前 100 行之内就可以。

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

下面的注释代码可以告诉解释器,结束配置向导的解释,不过这不是必须的。

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

在前面的示例代码中,配置向导我写在 bms_config.h中,当我们添加了以上注释代码启用配置向导后,需要重新打开一下 bms_config.h文件,这时,在文件的左下角就会出现Text EditorConfiguration Wizard两个界面选项,它们分别对应程序源码和配置界面。

三、Configuration Wizard的语法规则

大家如果有使用过HTML语法,这里就非常容易理解了,它和 HTML一样,使用成对的标签来代表不同的功能,如<*>和</*>,其中 * 代表不同的功能标签。

标签h

通过使用和来设置一个分组,它可以在配置向导中进行折叠。

// <h> 分组标题// …// </h>

标签i

使用+提示内容来设置对上一个配置项的提示,可以配置多行。

// <i> 提示内容 如 Select the cell type for calcu the soc

当鼠标移动到配置项时显示提示内容。

标签e

使用和来设置一个分组,该类分组可以整体被禁止或使能,也可以在配置向导中进行折叠。

当禁止时无法修改配置该组内容,组内文字变灰暗;反之即可修改内容。

这里对于,还有一个规则<e1.2>,这种e1.2表示修改该配置项下面出现的第2个配置参数的第2位(0位开始),它只能修改一个位,可以嵌套使用。

// <e> 使能分组标题// …// </e>

这里看一个折叠的例子,其中也包含了 o 和 e 标签作用于参数的位域的操作。

//   <e1.13> Enable Chip Select 0 (CSR0)//     <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>#define A1 (0xFFE00000)#define A2 (0x010024A9)   // EBI_CSR0: Flash

标签o

使用标签o可以在配置界面添加一个数值修改框或使能框(只修改一个位时),它与标签e同样还有添加规则<o1.2>和<o1.2..3>。比如表示修改该配置项下面出现的第1个配置参数的第1位,它只修改一个位;比如表示修改该配置项下面出现的第4个配置参数的第2到5位,它可以修改多个位。

// <o> 标题内容

另外,标签 o 还可以设置修改范围和步进,其中步进可以省略。

// <o> 标题内容 <最小值-最大值:步进>

如果想使用下拉菜单的话,可以在标签o的后面增加如下的选项内容。

// <o> 标题内容 <0=> 选项0  <1=> 选项1  <n=> 选项n

标签q

它标签o差不多,不过它只能修改数值的一个位,不能修改多个位,支持<q1.2>。

// <q> 标题内容

标签c

使用标签c可以在配置界面添加一个使能框注释或取消注释代码内容,其实就是用来操作是否将宏定义内容注释掉。

// <c>//#define DEBUG_FLAG// </c>
// <!c>#define DEBUG_FLAG// </c>

四、结语

这里介绍了MDK中的Configuration Wizard 主要用法。掌握了配置向导这个方法,并不能提升编程效率,但对于代码的维护非常有益。另外,当我们做一些例程或者评估板的算法代码时,希望能够给用户提供一个比较好的参数设置界面,对于这个配置向导的应用是再好不过了。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
VN750B5TR-E 1 STMicroelectronics High Side Driver
$2.79 查看
LP-CC-1 1 Cooper Industries Electric Fuse, Time Delay Blow, 1A, 600VAC, 300VDC, 200000A (IR), Inline/holder
$52.52 查看
EVPAKE31A 1 Panasonic Electronic Components Keypad Switch, 1 Switches, SPST, Momentary, 0.02A, 15VDC, 1.6N, Solder Terminal, Surface Mount-right Angle,
$0.56 查看

相关推荐

电子产业图谱

多年硬件从业经验,专注分享从研发到供应链,再到精益制造过程中的经验和感悟!