手表功能RunModeTasks
RunModeTasks 功能解释
“RunModeTasks 执行特定于当前模式的功能 根据模式控制作行为”这句话是指 OV-Watch 智能手表项目中的一组任务,这些任务负责管理设备的运行模式并根据不同模式控制设备的行为。
主要组成部分
RunModeTasks 主要由以下三个部分组成:
- IdleEnterTask - 负责处理设备进入空闲状态的任务:
- 当设备一段时间无操作时,降低屏幕亮度以节省电量
- 当有按键或触摸屏输入时,恢复屏幕亮度 user_RunModeTasks.c:36-55
- StopEnterTask - 负责管理设备进入低功耗模式的任务:
- 处理设备进入停止模式的逻辑,包括关闭外设、LCD显示、触摸等
- 配置并进入STM32的STOP低功耗模式
- 管理系统唤醒条件(如手腕抬起、按键按下等)
- 唤醒后恢复系统运行状态 user_RunModeTasks.c:62-165
- IdleTimerCallback - 定时器回调函数,用于:
- 跟踪设备空闲时间
- 当达到预设的空闲时间阈值时,触发屏幕变暗
- 当达到预设的关闭阈值时,触发设备进入停止模式user_RunModeTasks.c:167-185
运行模式的管理
根据系统架构文档,OV-Watch 实现了三种电源模式:
- 运行模式(Running Mode) - 全功能运行,所有传感器和显示激活,功耗约70-80mA
- 睡眠模式(Sleep Mode) - MCU进入STOP模式,只有MPU6050保持活跃以计步,显示屏关闭,功耗约800μA
- 关机模式(Shutdown Mode) - 电源调节器禁用,只有RTC由电池供电,功耗最小
RunModeTasks 主要负责在运行模式和睡眠模式之间的智能切换,这种切换基于:
- 用户是否有活动(按键、触摸屏)
- 预设的空闲时间阈值
- 手腕姿势(通过MPU6050传感器检测) user_RunModeTasks.c:117-133
任务的初始化与调度
这些任务在系统初始化时被创建并启动:
- IdleTimerHandle 定时器每100ms触发一次
- IdleEnterTask 和 StopEnterTask 作为FreeRTOS任务运行 user_TasksInit.c:167-168 user_TasksInit.c:182-183
总结
“RunModeTasks 执行特定于当前模式的功能 根据模式控制作行为”意味着这组任务负责:
- 监控设备的使用状态(是否有用户交互)
- 根据预设的时间阈值和设备状态切换不同的运行模式
- 在不同模式下控制设备的行为(如屏幕亮度、外设开关等)
- 优化电池寿命,在无需全功率运行时进入低功耗状态
这种模式管理机制是智能手表延长电池寿命的关键设计。