daemon init failed

This commit is contained in:
2026-03-09 02:35:08 +08:00
parent 9c58a09eab
commit cf1bc7b2ae
5 changed files with 66 additions and 27 deletions

View File

@@ -131,7 +131,21 @@ const osThreadAttr_t instask_attributes = {
//@Todo:测试使用
osThreadId insTaskHandle;
void StartINSTASK(void const *argument);
void StartINSTASK(void *argument);
//@Todo:测试daemon(但是没有daemon注册)
const osThreadAttr_t daemon_attributes = {
.name = "daemon",
.priority = osPriorityAboveNormal, // 较高优先级
.stack_size = 1024 * 4 // 栈大小单位是字节通常是字数的4倍
};
//@Todo:测试使用
osThreadId daemonHandle;
void DaemonTask();
/* USER CODE END FunctionPrototypes */
@@ -249,6 +263,10 @@ void MX_FREERTOS_Init(void)
//@Todo:INS_Task是测试版本
// 创建线程
insTaskHandle = osThreadNew(StartINSTASK, NULL, &instask_attributes);
//@Todo:daemon是测试版本
// 创建线程
daemonHandle = osThreadNew(DaemonTask, NULL, &daemon_attributes);
/* USER CODE END RTOS_THREADS */
/* USER CODE BEGIN RTOS_EVENTS */
@@ -406,7 +424,7 @@ __weak void RefereeTask(void *argument)
/* USER CODE BEGIN Application */
//@Todo:INS_Task是测试阶段使用。
__attribute__((noreturn)) void StartINSTASK(void const *argument)
__attribute__((noreturn)) void StartINSTASK(void *argument)
{
static float ins_start;
static float ins_dt;
@@ -425,6 +443,23 @@ __attribute__((noreturn)) void StartINSTASK(void const *argument)
}
}
/**
* @brief Function implementing the reference thread.
* @param argument: Not used
* @retval None
* @Todo:Deamon task
*/
/* USER CODE END Header_RefereeTask */
__weak void DaemonTask()
{
/* USER CODE BEGIN DaemonTask */
/* Infinite loop */
for (;;)
{
osDelay(1);
}
/* USER CODE END RefereeTask */
}
/* USER CODE END Application */

View File

@@ -31,10 +31,10 @@ void XidiPowerMeterDecode(FDCANInstance *_instance)
XidiPowerMeter_Msg_s *measure = &power_meter_instance->powermeter_msg;
// 重载守护进程
// if (power_meter_instance->daemon != NULL)
// {
// DaemonReload(power_meter_instance->daemon);
// }
if (power_meter_instance->daemon != NULL)
{
DaemonReload(power_meter_instance->daemon);
}
// 计算时间间隔
measure->dt = DWT_GetDeltaT(&power_meter_instance->feed_cnt);

View File

@@ -1,7 +1,8 @@
#include "daemon.h"
#include "bsp_dwt.h"
#include "stdlib.h"
#include "cmsis_os2.h"
#include "memory.h"
#include "stdlib.h"
/* 用于保存所有的daemon instance */
static Daemon_Instance *daemon_instances[DAEMON_MAX_NUM];

View File

@@ -45,9 +45,10 @@ void RobotCMDInit()
}
}
// ==================== 4. 在控制任务中读取使用 ====================
void CmdTask()
void CmdTask(void *argument)
{
RobotCMDInit();
DaemonReload(chassis_power_meter->daemon);
while (1)
{
if (chassis_power_meter != NULL)
@@ -62,4 +63,4 @@ void CmdTask()
osDelay(10); // 根据实际需要调整读取频率
}
}
}

View File

@@ -1,20 +1,22 @@
// //
// // Created by ASUS on 2025/12/15.
// //
//
// #ifndef TRONONEH7_SCAFFOLD_DEV_CMD_H
// #define TRONONEH7_SCAFFOLD_DEV_CMD_H
// Created by ASUS on 2025/12/15.
//
// /**
// * @brief 机器人核心控制任务初始化,会被RobotInit()调用
// *
// */
// void RobotCMDInit();
//
// /**
// * @brief 机器人核心控制任务,200Hz频率运行(必须高于视觉发送频率)
// *
// */
// void RobotCMDTask();
//
// #endif //TRONONEH7_SCAFFOLD_DEV_CMD_H
#ifndef TRONONEH7_SCAFFOLD_DEV_CMD_H
#define TRONONEH7_SCAFFOLD_DEV_CMD_H
// 如果用到了 FreeRTOS 的 API可以在这里包含或者在需要用到的源文件里包含
// #include "cmsis_os2.h"
/**
* @brief 机器人指令控制及外设初始化
*/
void RobotCMDInit(void);
/**
* @brief 指令下发主任务 (FreeRTOS 线程)
* @param argument 线程传入参数
*/
void CmdTask(void *argument);
#endif // TRONONEH7_SCAFFOLD_DEV_CMD_H