xidipower test

This commit is contained in:
2026-03-09 01:57:43 +08:00
parent 5145d60794
commit 9c58a09eab
4 changed files with 92 additions and 72 deletions

View File

@@ -8,7 +8,7 @@
// ==================== 2. 定义局部指针 ====================
static PowerMeterInstance *chassis_power_meter; // 功率计实例指针
static XidiPowerMeterInstance *chassis_power_meter; // 功率计实例指针
// 存放读取到的功率数据(也可以直接放进发给底盘的结构体里)
static float current_power_w = 0.0f;
@@ -16,15 +16,34 @@ static float current_voltage_v = 0.0f;
static float current_energy_j = 0.0f;
// ==================== 3. 在初始化函数中注册 ====================
// 1. 定义为静态变量static确保它的内存空间常驻防止底层指针悬垂
static XidiPowerMeter_Init_Config_s xidi_pm_config = {
.can_config = {
.can_handle = &hfdcan1, // 原来直接传的句柄,现在放进结构体里
.rx_id = 0x213, // 接收 ID
.tx_id = 0x000, // 发送 ID (不发送填0)
},
.daemon_config = {
.reload_count = 5, // 守护进程超时周期 (例如5次没收到算离线)
}
};
// 2. 初始化任务
void RobotCMDInit()
{
chassis_power_meter = PowerMeterInit(&hfdcan1);
// 传入配置结构体的地址,而不是直接传 hfdcan1
chassis_power_meter = XidiPowerMeterInit(&xidi_pm_config);
if (chassis_power_meter == NULL)
{
LOGERROR("[CMD] Power Meter Init Failed!");
}
else
{
// 建议加一句成功日志,方便上机调试时确认
LOGINFO("[CMD] Power Meter Init Success!");
}
}
// ==================== 4. 在控制任务中读取使用 ====================
void CmdTask()
{
@@ -33,9 +52,9 @@ void CmdTask()
{
if (chassis_power_meter != NULL)
{
current_power_w = PowerMeterGetPower(chassis_power_meter);
current_voltage_v = PowerMeterGetVoltage(chassis_power_meter);
current_energy_j = PowerMeterGetEnergy(chassis_power_meter);
current_power_w = XidiPowerMeterGetPower(chassis_power_meter);
current_voltage_v = XidiPowerMeterGetVoltage(chassis_power_meter);
current_energy_j = XidiPowerMeterGetEnergy(chassis_power_meter);
// 你可以将获取到的功率写入要发送给底盘的 cmd 中,例如限制最大速度
// chassis_cmd_send.real_power = current_power_w;