4.2 CPU 核的功耗管理
CPU 核在没有任务可做时要进入低功耗状态STOP 模式,在程序中通过空闲任务连续运行状态来判定。当所有的任务都不运行时,操作系统会自动运行空闲任务,当空闲任务连续运行超过一定的时间后(超过程序中需要的最大等待时间),关闭所有的外设,让CPU进入STOP 模式。具体的实现是将原有的空闲任务程序进行修改,增加一个记数器,当记数到一定的数值(即一定的时间)后,进入STOP 模式。
修改后的OS_TaskIdle 程序如下:
void OS_TaskIdle (void *pdata)
{
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{
OS_ENTER_CRITICAL();
OSIdleCtr++;
OS_EXIT_CRITICAL();
Count = count +1;
If (count > 某个数值)
{ 将CPU 进入STOP 模式;
}
OSTaskIdleHook();
}
}
由于空闲任务随时可能被别的任务抢先,当重新执行空闲任务时,如接着抢先点继续执行,全局变量COUNT 没有被清零,所以在每个任务开始运行或执行结束后,都需要对COUNT 清零,这样可以保证COUNT 重新记数,在FOR 循环语句中,当COUNT 记数到一定值,CPU 将进入STOP 模式。
5 结束语
本RTU 微控制器经过试运行后,功耗满足要求,静态功耗小于500μA/12V,在采用10AH 的蓄电池加太阳能板(容量灵活组合),可以保证系统无日照50 天正常工作。由于采用了μCOS-II 操作系统,并编写了硬件驱动程序的内核接口和用户接口,使程序具有良好的移植性,也方便了应用程序开发人员编写程序。
本文作者创新点:提出了一种基于ARM7 和μCOSII 的RTU 低功耗设计方案。采用ARM7 处理机,又根据RTU 设备工作特点设计了电源功耗管理软件,实现了RTU 高的处理能力、低的功耗及长时间的电池供电。
该设计可大规模应用在全国水情测报系统中,将会有500 万以上的经济效益。