# task.py 函数文档 任务调度系统的核心实现,提供协作式多任务调度、定时器管理和看门狗功能。 ## 常量定义 ### 任务模式
- TASK_MODE_ONCE: 单次执行任务 (0)
- TASK_MODE_PERIOD: 周期执行任务 (1) ### 定时器模式
- TIMER_MODE_TIMER: 普通定时器 (0)
- TIMER_MODE_ONCEROUTINE: 单次回调定时器 (1)
- TIMER_MODE_CYCROUTINE: 循环回调定时器 (2) ### 系统参数
- MAX_TIMER: 最大定时器数量 (5)
- TICK_PER_S: 每秒时钟滴答数 (1000) ## 工具函数 ### seconds_to_hms(total_seconds)
python
def seconds_to_hms(total_seconds)

- 功能: 将秒数转换为时:分:秒格式
- 参数:
- total_seconds: 总秒数
- 返回值: 格式化的时间字符串 (HH:MM:SS) ## 核心类 ### task_Timer 类
python
class task_Timer

- 功能: 基础定时器实现
- 方法:
- set(interval): 设置定时器间隔
- expired(): 检查定时器是否过期 ### TaskData 类
python
class TaskData

- 功能: 任务数据结构
- 属性:
- active: 任务是否激活
- mode: 任务模式
- task_id: 任务ID
- name: 任务名称
- last_time: 上次执行时间
- period: 执行周期
- task_proc: 任务处理函数 ### TimerData 类
python
class TimerData

- 功能: 定时器数据结构
- 属性:
- in_use: 是否在使用
- timer_id: 定时器ID
- timer_ex_id: 外部定时器ID
- mode: 定时器模式
- period: 周期
- last_time: 剩余时间
- routine: 回调函数
- param: 回调参数 ### TaskScheduler 类
python
class TaskScheduler

- 功能: 任务调度器实现
- 主要方法: #### 任务管理
python
def add_task(self, task_id, mode, name, period, task_proc)

- 功能: 添加新任务
- 参数:
- task_id: 任务ID
- mode: 任务模式
- name: 任务名称
- period: 执行周期
- task_proc: 任务处理函数
python
def active_task(self, task_id, period)

- 功能: 激活任务
- 参数:
- task_id: 任务ID
- period: 执行周期
python
def suspend_task(self, task_id)

- 功能: 挂起任务
- 参数:
- task_id: 任务ID #### 定时器管理
python
def start_timer(self, mode, period, routine, param=None)

- 功能: 启动定时器
- 参数:
- mode: 定时器模式
- period: 周期
- routine: 回调函数
- param: 回调参数
- 返回值: 定时器ID
python
def stop_timer(self, timer_id)

- 功能: 停止定时器
- 参数:
- timer_id: 定时器ID #### 系统功能
python
def task_proc(self)

- 功能: 主任务处理函数
- 实现:
- 处理中断计数
- 更新任务时间
- 执行到期任务 ## 全局对象 ### scheduler
python
scheduler = TaskScheduler()

- 功能: 全局任务调度器实例 ### wdt
python
wdt = WDT(timeout=40000)

- 功能: 看门狗定时器
- 超时: 40秒(考虑网络连接时间) ## 系统初始化函数 ### init_timer()
python
def init_timer()

- 功能: 初始化1ms系统定时器 ### init_task()
python
def init_task()

- 功能: 初始化系统任务
- 初始化任务:
1. 看门狗任务 (1s周期)
2. LED闪烁任务 (100ms周期)
3. 蜂鸣器任务
4. 时钟同步任务 (59分钟周期) ## 主循环函数 ### task_run()
python
def task_run()

- 功能: 系统主循环
- 实现: 持续执行任务处理函数 ## 使用示例
python
from task import scheduler, init_task, task_run # 初始化任务系统
init_task() # 添加自定义任务
def custom_task():
print("Custom task running") scheduler.add_task(TASK_ID_CUSTOM, TASK_MODE_PERIOD, "CustomTask", 1000, custom_task)
scheduler.active_task(TASK_ID_CUSTOM, 1000) # 启动任务系统
task_run()
## 注意事项 1. 看门狗超时时间为40秒,需确保关键任务在此时间内完成
2. 任务调度是协作式的,每个任务应该尽快完成
3. 定时器数量限制为5个,使用时需要合理规划
4. 时钟同步任务每59分钟执行一次
5. 系统使用1ms定时器中断作为基本时钟源