嵌入式时钟管理器的设计与实现
UINT8prior;
UINT8next;
}idatawdList[_MAX_WDOG_NUM_];
UINT8headIdx;//索引首结点
有了delta列表法的思路及其实现的数据结构,在静态数组法具体实现的基础上,便可得此法的具体实现。
应用中如果目标系统ROM较小,且系统中启用的定时器少,则用静态数组法;若目标系统ROM较大,且系统中用到的定时器较多,则用delta列表法。
3 应用
针对前述的嵌入式系统中的定时需求,利用定时器管理系统给出其实现代码。
假定“特定操作”为voidspecFunc(void),“特定时间段”长度为10分钟。
(1)在经历特定的时间段后,执行特定操作。
#include″clk.h″
#include″wdLib.h″
voidmain(void){
WDOG_IDwdId;
constructClk();constructWDOG();
wdId=wdCreate();
wdStart(wdId,10*ONE_MINUTE,specFunc);
while(1);
}
(2)以给定周期周期性地执行特定操作。
基于前者,只需在voidspecFunc(void)函数体的最后加入下述代码即可:
wdStart(wdId,10*ONE_MINUTE,specFunc);
注:该给定周期为10分钟。
由于本时钟管理器只需一个硬件定时器的支持,所以其具有广泛的适用性。使用时,只需进行简单的配置,即可为裸露的目标系统加以简单的软件抽象层。其友好的用户接口有效降低了嵌入式系统的开发难度,提高了目标系统的可靠性。笔者已在实际项目中多次使用了该时钟管理器。基于该时钟管理器的目标系统运行稳定、可靠,从而充分说明该时钟管理器设计的实用性和科学性。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论