mirror of
https://gitee.com/dlmu-cone/tronone-h7-scaffold
synced 2026-07-25 03:47:46 +08:00
daemon init success
This commit is contained in:
@@ -34,6 +34,7 @@
|
|||||||
// // #include "ins_task.h"
|
// // #include "ins_task.h"
|
||||||
// #include "bsp_log.h"
|
// #include "bsp_log.h"
|
||||||
#include "dev_cmd.h"
|
#include "dev_cmd.h"
|
||||||
|
#include "daemon.h"
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
@@ -145,7 +146,7 @@ const osThreadAttr_t daemon_attributes = {
|
|||||||
//@Todo:测试使用
|
//@Todo:测试使用
|
||||||
osThreadId daemonHandle;
|
osThreadId daemonHandle;
|
||||||
|
|
||||||
void DaemonTask();
|
void StartDaemonTask(void *argument); // <--- 新的,带参数的标准 RTOS 线程声明
|
||||||
|
|
||||||
/* USER CODE END FunctionPrototypes */
|
/* USER CODE END FunctionPrototypes */
|
||||||
|
|
||||||
@@ -264,9 +265,9 @@ void MX_FREERTOS_Init(void)
|
|||||||
// 创建线程
|
// 创建线程
|
||||||
insTaskHandle = osThreadNew(StartINSTASK, NULL, &instask_attributes);
|
insTaskHandle = osThreadNew(StartINSTASK, NULL, &instask_attributes);
|
||||||
|
|
||||||
//@Todo:daemon是测试版本
|
//@Todo:daemon是测试版本
|
||||||
// 创建线程
|
// 创建线程
|
||||||
daemonHandle = osThreadNew(DaemonTask, NULL, &daemon_attributes);
|
daemonHandle = osThreadNew(StartDaemonTask, NULL, &daemon_attributes); // <--- 换成新的函数名
|
||||||
/* USER CODE END RTOS_THREADS */
|
/* USER CODE END RTOS_THREADS */
|
||||||
|
|
||||||
/* USER CODE BEGIN RTOS_EVENTS */
|
/* USER CODE BEGIN RTOS_EVENTS */
|
||||||
@@ -447,19 +448,27 @@ __attribute__((noreturn)) void StartINSTASK(void *argument)
|
|||||||
* @brief Function implementing the reference thread.
|
* @brief Function implementing the reference thread.
|
||||||
* @param argument: Not used
|
* @param argument: Not used
|
||||||
* @retval None
|
* @retval None
|
||||||
* @Todo:Deamon task
|
* @Todo:Deamon task 后期加入cmd和def
|
||||||
*/
|
*/
|
||||||
/* USER CODE END Header_RefereeTask */
|
/* USER CODE END Header_RefereeTask */
|
||||||
__weak void DaemonTask()
|
__attribute__((noreturn)) void StartDaemonTask(void *argument)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN DaemonTask */
|
/* USER CODE BEGIN StartDaemonTask */
|
||||||
|
// LOGINFO("[freeRTOS] Daemon Task Start");
|
||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
osDelay(1);
|
// 1. 执行核心的数据刷新逻辑
|
||||||
|
Daemon_Update();
|
||||||
|
|
||||||
|
// 2. 线程休眠 10ms (100Hz 运行频率)
|
||||||
|
osDelay(10);
|
||||||
}
|
}
|
||||||
/* USER CODE END RefereeTask */
|
/* USER CODE END StartDaemonTask */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 注意:把你原来写在 freertos.c 里的那个 __weak void DaemonTask() 整个删掉,防止干扰!
|
||||||
|
|
||||||
/* USER CODE END Application */
|
/* USER CODE END Application */
|
||||||
|
|
||||||
|
|||||||
@@ -50,16 +50,20 @@ uint8_t DaemonIsOnline(Daemon_Instance *daemon)
|
|||||||
* 模块成功接受数据或成功操作则会重载temp_count的值为reload_count.
|
* 模块成功接受数据或成功操作则会重载temp_count的值为reload_count.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void DaemonTask(void)
|
// === 在 daemon.c 中修改 ===
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 轮询刷新所有的守护进程实例
|
||||||
|
*/
|
||||||
|
void Daemon_Update(void) // 名字改掉,不要叫 Task,避免和 RTOS 线程混淆
|
||||||
{
|
{
|
||||||
Daemon_Instance *daemon;
|
Daemon_Instance *daemon;
|
||||||
for (uint8_t i = 0; i < idx; i++)
|
for (uint8_t i = 0; i < idx; i++)
|
||||||
{
|
{
|
||||||
daemon = daemon_instances[i];
|
daemon = daemon_instances[i];
|
||||||
if (daemon->temp_count > 0) // 如果计数器还有值,说明上一次喂狗后还没有超时,则计数器减一
|
if (daemon->temp_count > 0)
|
||||||
daemon->temp_count--;
|
daemon->temp_count--;
|
||||||
else if (daemon->callback != NULL) // 等于零说明超时了,调用回调函数(如果有的话)
|
else if (daemon->callback != NULL)
|
||||||
daemon->callback(daemon->id);
|
daemon->callback(daemon->id);
|
||||||
// @todo 可以加入蜂鸣器或者led等提示
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,6 +67,6 @@ uint8_t DaemonIsOnline(Daemon_Instance *daemon);
|
|||||||
* 模块成功接受数据或成功操作则会重载temp_count的值为reload_count.
|
* 模块成功接受数据或成功操作则会重载temp_count的值为reload_count.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void DaemonTask(void);
|
void Daemon_Update(void);
|
||||||
|
|
||||||
#endif // DAEMON_H
|
#endif // DAEMON_H
|
||||||
|
|||||||
Reference in New Issue
Block a user