- 打卡等级:以坛为家II
- 打卡总天数:466
- 最近打卡:2025-06-16 22:40:21
荣誉版主
- 积分
- 4477
|
发表于 2024-2-10 15:26:06
|
显示全部楼层
本帖最后由 CosyOS 于 2024-2-10 15:53 编辑
新年好!
CosyOS的系统空闲任务是有机会进入低功耗的。
uCreateTask(Sysidle, 0, MCUCFG_STACKSIZE_SYSIDLE, 0, 0)
{
// 1:如果启用了“安全运行时”,会编译下方代码。如果有任务进入超时状态,将在此清除超时信号,并在任务调度时恢复任务为就绪状态。
#if SYSCFG_SAFERUNTIME == __ENABLED__
if(true){
s_tid_t i;
for(i = 1; i < OS_TASKTOTAL + 1; i++){
s_sign_timeout = 0;
}
}
#endif
// 2:如果启用了软件RTC,会编译下方代码。如果“年”发生变化,将会重新计算2月为几天?
#if SYSCFG_SOFTRTC == __ENABLED__
if(true){
static s_u8_t year = 0xFF;
if(year != s_rtc[0][0]){
year = s_rtc[0][0];
s_month2day = year ? ((year & 3) ? 28 : 29) : ((sDefCentury & 3) ? 28 : 29);
}
}
#endif
// 3:如果启用了空闲钩子,将会被调用,执行用户的代码。
#if SYSCFG_IDLEHOOK == __ENABLED__
idle_hook();
#endif
// 4:进入低功耗(STC为:PCON |= 0x01; Arm为:__WFI();)
mSys_Idle;
uEndTasking;
}
一、如果启用了“安全运行时”,进入低功耗模式的机率会显著降低,否则会时常进入低功耗模式。
二、如果三个系统配置项均禁用,那么只有进入低功耗 / 退出低功耗 的循环往复。
三、用户也可自行调整低功耗模式的等级(在MCU配置头文件中修改或直接修改 mSys_Idle),但必须支持中断唤醒。
|
|