神农鼎 发表于 2024-2-9 10:18:09


380091044 发表于 2024-2-10 08:21:45

神农鼎 发表于 2024-2-9 09:40
龙年新春捷报:
STC8H2K32U-45MHz-LQFP32/TSSOP28 的 USB 型 MCU 已开始制造光罩流程中
RMB1.3 的 USB, STC ...

2024年STC事业飞黄腾达,生意兴隆!

380091044 发表于 2024-2-10 08:22:19

神农鼎 发表于 2024-2-9 10:18


新年好龙年大吉!

380091044 发表于 2024-2-10 08:39:15

老师:新年好,给你拜个年!我突然想到一个问题,想请教一下,系统自身创建了一个空闲任务,并设它为最低优先级,当系统没有任务任务就绪时,则运行这个任务,让CPU“有事可干”。,系统空闲时,让他进入低功耗、休息不好吗?省电,为啥非要给他找一个无关紧要事,让它跑呢?

CosyOS 发表于 2024-2-10 15:26:06

本帖最后由 CosyOS 于 2024-2-10 15:53 编辑

380091044 发表于 2024-2-10 08:39
老师:新年好,给你拜个年!我突然想到一个问题,想请教一下,系统自身创建了一个空闲任务,并设它为最低优 ...
新年好!
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){
                        year = s_rtc;
                        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),但必须支持中断唤醒。



380091044 发表于 2024-2-10 16:51:44

CosyOS 发表于 2024-2-10 15:26
新年好!
CosyOS的系统空闲任务是有机会进入低功耗的。



感谢老师指点,

success 发表于 2024-2-12 09:18:29

好像提供的示例里面不见有用户任务的声明及创建似的?只有
uStartTask(Starter, OS_STATUS_READY);
uStartTask(Sysidle, OS_STATUS_READY);

好像这两个不像是用户任务似的?
哪位请指导一下,谢谢?

success 发表于 2024-2-12 09:19:26

uStartTask(Starter, OS_STATUS_READY);
uStartTask(Sysidle, OS_STATUS_READY);
请问这两个是否系统级任务?就是必须创建的?

CosyOS 发表于 2024-2-12 17:17:54

success 发表于 2024-2-12 09:19
uStartTask(Starter, OS_STATUS_READY);
uStartTask(Sysidle, OS_STATUS_READY);
请问这两个是否系统级任务 ...

这两个是系统任务,由系统自动创建并启动。
测试程序中都有用户任务创建的示例。

success 发表于 2024-2-16 15:39:35

CosyOS 发表于 2024-2-12 17:17
这两个是系统任务,由系统自动创建并启动。
测试程序中都有用户任务创建的示例。 ...

您好,我打开的就是测试程序呀?
页: 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38 39 40 41 42 43
查看完整版本: 全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板