#ifndef SYS_TASK_RUNNER_H #define SYS_TASK_RUNNER_H /** * @brief 任务执行器。 * @note 负责消费 TaskManager 置位的任务,并驱动各模块完成实际工作。 */ class TaskRunner { public: /** * @brief 初始化任务执行器运行时上下文。 * @param[in] 无。 * @param[out] 无。 * @retval 无返回值。 * @note 执行一次初始 ADC 采样,填充运行时数据的起点。 */ static void init(); /** * @brief 执行当前所有已置位的待处理任务。 * @param[in] 无。 * @param[out] 无。 * @retval 无返回值。 * @note 若当前没有待执行任务,直接返回。 */ static void runPending(); private: struct Runtime; static Runtime s_runtime; /** @brief 采样 VIN/VREF 原始值。 */ static void taskAdcVrefSample(); /** @brief 采样内部温度原始值。 */ static void taskAdcTempSample(); /** @brief 根据采样值计算工程量。 */ static void taskAdcProcess(); /** @brief 兼容保留的 CAN 轮询任务。 */ static void taskCanRxPoll(); /** @brief 解析并消费接收帧。 */ static void taskCanRxParse(); /** @brief 预留的 CAN 发送准备任务;当前不主动生成周期业务帧。 */ static void taskCanTxPrepare(); /** @brief 预留的 CAN 发送执行任务;当前仅保留接口,不参与周期调度。 */ static void taskCanTxSend(); /** @brief 状态灯维护任务(当前预留)。 */ static void taskStatusLed(); /** @brief 心跳维护任务(当前预留)。 */ static void taskHeartbeat(); /** @brief 诊断打印任务。 */ static void taskDiagnosticPrint(); /** @brief SPI CS release 后推迟的命令解析(从 ISR 移出)。 */ static void taskSpiCmdProcess(); /** @brief EtherCAT 周期/事件处理(非实时应用层 PDO 映射)。 */ static void taskEthercatProcess(); }; #endif /* SYS_TASK_RUNNER_H */