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:测试使用 //@Todo:测试使用
osThreadId insTaskHandle; 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 */ /* USER CODE END FunctionPrototypes */
@@ -249,6 +263,10 @@ void MX_FREERTOS_Init(void)
//@Todo:INS_Task是测试版本 //@Todo:INS_Task是测试版本
// 创建线程 // 创建线程
insTaskHandle = osThreadNew(StartINSTASK, NULL, &instask_attributes); insTaskHandle = osThreadNew(StartINSTASK, NULL, &instask_attributes);
//@Todo:daemon是测试版本
// 创建线程
daemonHandle = osThreadNew(DaemonTask, NULL, &daemon_attributes);
/* USER CODE END RTOS_THREADS */ /* USER CODE END RTOS_THREADS */
/* USER CODE BEGIN RTOS_EVENTS */ /* USER CODE BEGIN RTOS_EVENTS */
@@ -406,7 +424,7 @@ __weak void RefereeTask(void *argument)
/* USER CODE BEGIN Application */ /* USER CODE BEGIN Application */
//@Todo:INS_Task是测试阶段使用。 //@Todo:INS_Task是测试阶段使用。
__attribute__((noreturn)) void StartINSTASK(void const *argument) __attribute__((noreturn)) void StartINSTASK(void *argument)
{ {
static float ins_start; static float ins_start;
static float ins_dt; 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 */ /* USER CODE END Application */

View File

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

View File

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

View File

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

View File

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