概述
PH7 代码框架的机载控制参数系统为整个代码框架以及用户代码提供了控制参数的读取、写入、空地间传输等功能的全套使用解决方案。用户只需要掌握几个简单函数的使用,即可使用上述功能。
机载参数数据存储于控制板外置 flash 或 eeprom 存储器中。可通过 CSS控制站以单个或批量的方式下载及上传设定。同时,还提供了相应的功能函数供二次开发使用。
与数据总线系统类似,二次开发用户同样可以自定义添加自己所需的参数。
基本使用步骤
- 加入UseGlobalObject.h文件包含
若是在二次开发代码中首次使用参数系统功能,那么需要在二次开发代码的.cpp文件顶部加入如下文件包含(与数据总线使用方式一致):
#include"../../Frame/UseGlobalObject.h" //文件包含路径根据实际情况确定
若是在PH47框架文件中(如应用层)使用参数系统,一般情况下都已经进行过必要的文件包含了,无需再次包含。
- 通过引用对象frm.para来使用参数系统功能
通过框架层全局引用frm下的参数系统子引用para来使用参数系统的各种功能函数:
frm.para.function()
简明使用指南
读取参数数值
使用函数 |
float Get(PARAID eParaId) |
功能 |
获取机载控制参数数值。 Get() 函数获取的参数是存储于RAM当中的,若存储器(flash/e2prom)中参数被CSS上传设定所更新,或被程序中其他参数设定函数()所改变,则RAM中参数数值也自动更新,用户无需手动刷新。 |
参数 |
eParaId为机载参数 id,定义见: \DevStudio\BoardConfig\Board_xxx\ParamDict_xxx.h 中的enum PARAID |
所属类 |
CParameter |
类文件 |
\DevStudio\Frame\Core\Parameter.cpp(.h) |
示例 |
// 获取当前设定的遥测通讯波特率
uint32_t uBaudRate = (uint32_t)(core.para.Get(P_TELE_USART_BAUD_RATE));
// P_SENSOR_ACC_OFST_X 为加速度计x轴偏移量
float fVal = frm.para.Get(P_SENSOR_ACC_OFST_X);
更新及写入参数数值
使用函数 |
bool Set(PARAID eParaId, float fValue, bool blForceSave = false) |
|
功能 |
设置机载调参参数数值, 同时可选是否对存储介质(Flash或EEprom)存储数据进行强制更新。 |
|
参数 |
eParaId |
机载参数 id; |
fValue |
待设置参数数值; |
|
blForceSave |
为 ture时同时更新 RAM 及存储器中数值,此时应注意考虑存储耗时造成的影响。 false时只更新RAM中的数值。 blForceSave 为 ture时不能进行高速率(>50hz)密集调用,否则有可能造成存储器写入超时而导致数据存储失败 |
|
所属类 |
CParameter |
|
类文件 |
\DevStudio\Frame\Core\Parameter.cpp(.h) |
|
示例 |
// 设置参数 P_SENSOR_ACC_OFST_X 为 _cal_acc_offset.x, 且强制进行存储
core.para.Set(P_SENSOR_ACC_OFST_X, _cal_acc_offset.x, true);
// 仅对RAM当中的参数数值进行更新,控制板重启后丢失
frm.para.Set(P_SENSOR_ACC_OFST_X, blSave);
机载控制参数ID定义
相关声明 |
由枚举PARAID进行声明 |
功能作用 |
对机载控制参数ID及顺序进行定义 |
相关文件 |
DevStudio\BoardConfig\Board_xxx\ParamDict_xxx.h |
说明 |
枚举PARAID定义中的ID顺序决定了在 CSS 参数数值列表中的顺序。 |
机载控制参数详细信息设定(参数字典)
增加用户自定义参数
- 步骤1:加入参数ID
相关定义 |
在g_arParaDictMCU[]结构数组对每个机载控制参数的详细信息进行设定 g_arParaDictMCU[]结构数组也成为参数字典 |
功能作用 |
对机载控制参数包括名称,默认数值,数值范围等具体信息进行设定 |
相关文件 |
DevStudio\BoardConfig\Board_xxx\ParamDict_xxx.cpp |
说明 |
在此文件中,参数信息描述的顺序不必与 ParamDict_XXX.h 文件的 PARAID 枚举中的顺序严格保持一致 |
在 ParaDict_xxx.h 文件 enum PARAID 枚举定义的用户区域(注释符号 <=>=<=>=<=>=<=> 包围)当中加入新参数 id 的定义,不要为id指定特定数值,顺序排列即可。
除此之外, 对于区域内用户自定义参数的位置及顺序无特别要求。在 CSS 参数下载列表中的顺序以 enum PARAID 顺序为准。
// <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>
// 用户自定义参数设置区域, 不得对该区域之外的任何内容进行修改
P_TEST_USER_1, // 自定义参数 id
// <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>
- 步骤2:加入新参数的的属性设定
在 ParaDict_xxx.cpp 文件的参数字典 g_arParaDictMCU[] 定义的用户区域(注释符号 <=>=<=>=<=>=<=> 包围)加入新参数的属性数据。enum PARAID 当中参数 id 数值及顺序与 g_arParaDictMCU[] 各元素均无关系,可根据实际需要组织
修改参数字典后,必须通过调试控制台运行一次 "initfstrun;"命令以初始化存储器数据。执行该命令后,控制板需要重新启动以便让初始化生效
注意!!! 普通用户对于用户区域(注释符号 <=>=<=>=<=>=<=> 包围)之外的代码不能进行任何修改高级用户若需进行修改,则修改后必须重新编译相关 lib 文件。
// <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>
// 用户自定义参数设置区域, 不得对该区域之外的任何内容进行修改
// 自定义参数 P_TEST_USER_1 的默认属性进行设置
{"TestUser_1", P_TEST_USER_1, 0x0000, 256.0f, 0.0f, 500.0f},
// <=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>=<=>
BBDB固件参数说明
参数名称 |
参数id |
默认数值 |
功能描述 |
RunCounts |
P_RUNCNTS, |
0.0f |
飞控板自最近一次执行initfstrun;命令后的运行次数 |
FirmwareID |
P_FIRMWARE_TYPE |
FIRMWARE_BBDB (7453) |
当前固件ID |
TeleBaudRate |
P_TELE_USART_BAUD_RATE |
115200.0f |
USART1遥测串口波特率 |
ConsoleMode |
P_CONSOLE_MODE |
MUSART_DEBUG_CONSOLE (0) |