运行模式管理

运行状态

系统的运行状态分为: 正常工作状态, 睡眠状态(STOP模式), 关机状态。

  1. 工作状态,系统功耗最大,屏幕正常亮,此时功耗大概在80+mA.
  2. 睡眠状态,屏幕熄灯,MCU进入STOP模式,MPU6050仍在记步数,此时功耗大概<1mA.
  3. 关机状态,TPS63020直接关闭使能,此时无3V3供电,只有Vbat供电给RTC.

状态切换逻辑

正常工作状态与睡眠状态的切换逻辑, 详见user_RunModeTask.c,

  1. 首先当收到Stop_MessageQueue信号量时, 进入睡眠前的操作, 息屏等操作.
  2. 再挂起其他任务挂起系统调度, 保护资源, 关闭外部看门狗, 否则进入了STOP模式没有clk喂狗会导致reset导致直接关机。然后让MCU进入STOP模式.
  3. 进入STOP后, 没有中断发送, 则运行停止在HAL_PWR_EnterSTOPMode语句后, 当中断发生后则继续向下执行代码。
  4. 中断发生例如RTC定时中断后(RTC中断设置详见/Core/Src/rtc.c),退出STOP模式,重新配置CLK,然后喂狗一次。再执行xTaskResumeAll,恢复系统调度。
  5. 判断唤醒条件, 中断发生后, 不一定是需要退出睡眠模式, 所以需要判断是否满足唤醒条件, 不满足则goto sleep跳转到睡眠初始的地方, 继续重复上诉流程。满足唤醒条件则继续向下执行。
if(osMessageQueueGet(Stop_MessageQueue,&Stopstr,NULL,0)==osOK)
{
    /****************** operations before sleep ***************/
    sleep:
    // ...
    // ...
    /**********************************************************/

    /********************* enter sleep mode *******************/
        vTaskSuspendAll();
        //Disnable Watch Dog
        WDOG_Disnable();
        //systick int
        CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk);
        //enter stop mode
        HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);

        //here is the sleep period

    /**********************************************************/

    /********************* quit sleep mode ********************/

        //resume run mode and reset the sysclk
        SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk);
        HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq));
        SystemClock_Config();
        WDOG_Feed();
        xTaskResumeAll();
    /**********************************************************/

    /****************** your wakeup operations ****************/
    // wake条件check
    // 如果不满足则继续重新进入sleep, goto sleep;
    // 满足唤醒条件, 例如翻腕动作或者按键动作发生, 则继续向下执行
    // ...
}
/**********************************************************/
Copyright © 油炸鸡开源硬件 | 渝ICP备2024035140号 | all right reserved,powered by Gitbook更新时间: 2024-11-12 16:38:52

results matching ""

    No results matching ""