68 lines
2.4 KiB
C
68 lines
2.4 KiB
C
|
/*****************************************************************************
|
|||
|
* @copyright 2024-202, . POWER SUPPLY CO., LTD.
|
|||
|
* @file logic_main.h
|
|||
|
* @brief xxxx
|
|||
|
* @author Gary
|
|||
|
* @date 2024/09/29
|
|||
|
* @remark 初修订
|
|||
|
*****************************************************************************/
|
|||
|
#pragma once
|
|||
|
#include <stdarg.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <stdio.h>
|
|||
|
#include <stdint.h>
|
|||
|
#include "logic_comm.h"
|
|||
|
|
|||
|
|
|||
|
#define MAX_TASK_NUM 10
|
|||
|
|
|||
|
// 在头文件中配置任务链
|
|||
|
#define INIT_TASK_GROUP() \
|
|||
|
{ \
|
|||
|
task_group[E_TACTIC_MODE_START] = init_task_list(1, example_task1); \
|
|||
|
task_group[E_TACTIC_MODE_DEBUG] = init_task_list(2, logicFun_protect,logicFun_powerDistr); \
|
|||
|
task_group[E_TACTIC_MODE_PEAKVALLY] = init_task_list(3, logicFun_peakValley,logicFun_protect,logicFun_powerDistr); \
|
|||
|
task_group[E_TACTIC_MODE_DEMANDRES] = init_task_list(1, example_task1); \
|
|||
|
task_group[E_TACTIC_MODE_LOADTRACK] = init_task_list(1, example_task1); \
|
|||
|
task_group[E_TACTIC_MODE_DMDCTRL] = init_task_list(1, example_task1); \
|
|||
|
task_group[E_TACTIC_MODE_PFCTRL] = init_task_list(1, example_task1); \
|
|||
|
}
|
|||
|
|
|||
|
typedef int (*task_func_t)(); // 定义函数指针类型,返回值为int
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
E_RUN_ONCE, //单次运行
|
|||
|
E_RUN_period //周期运行
|
|||
|
} task_run_type;
|
|||
|
|
|||
|
typedef struct tast_register_execute
|
|||
|
{
|
|||
|
// protocol_type_master_e protocolType; // 任务
|
|||
|
// task_run_type taskType; // 任务类型
|
|||
|
// uint16_t taskPeriod; // 任务间隔 ms
|
|||
|
task_func_t task; // 任务指针
|
|||
|
struct tast_register_execute* next; // 指向下一个任务
|
|||
|
} tast_register_execute;
|
|||
|
|
|||
|
extern tast_register_execute* task_group[E_TACTIC_MODE_END];
|
|||
|
|
|||
|
void example_task1();
|
|||
|
|
|||
|
//初始化任务链表,支持多个任务函数指针
|
|||
|
tast_register_execute* init_task_list(int count, ...);
|
|||
|
|
|||
|
/*****************************************************************************
|
|||
|
* @brief 创建任务调度线程
|
|||
|
* @param[in] 无
|
|||
|
* @return 无
|
|||
|
*****************************************************************************/
|
|||
|
void* creatLogicTaskThread(void* arg);
|
|||
|
|
|||
|
/*********************************************************************
|
|||
|
* @brief 新建任务模块的初始化工作
|
|||
|
* @param[in] 无
|
|||
|
* @return 0:sucessful;1:fault
|
|||
|
*********************************************************************/
|
|||
|
int creatLogicCtrTaskEntry();
|