大鹏卡槽厂家
免费服务热线

Free service

hotline

010-00000000
大鹏卡槽厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

VxWorks下的异步通用定时器设计 软件编程OS 免费猫

发布时间:2020-02-17 13:58:40 阅读: 来源:大鹏卡槽厂家

VxWorks下的异步通用定时器设计 - 软件编程/OS - 电子工程网

首先创建看门狗,然后在启动看门狗时连接用户函数并设置延迟时间。上面程序中的 interval即为延迟时间,单位为系统时钟的tick数。缺省情况下,系统时钟每秒的tick数为60。当interval为1时,即延迟1/60 s后执行usrFunc。系统时钟的tick数可以通过sysClkRateSet函数设置。

3异步通用定时器的设计

3.1 设计思想

虽然看门狗提供的定时机制相对简单易用,但还有许多局限性:①定时时间的单位为tick数,而不是通常使用的s或者ms。②用户函数运行在系统时钟中断服务程序中,而不是运行在任务的上下文中。这给用户函数带来许多限制(比如用户函数中不能使用内存分配、获取信号量、printf 打印输出等),在这些限制下某些功能可能就无法实现。③看门狗的触发是一次性的,而通常需要周期性的定时器。④相对于Windows下的定时器接口,看门狗接口不够简洁明了。

异步通用定时器的设计基于看门狗,并在此基础上做进一步的封装,提供类似于Windows的使用方式。系统时钟每秒的tick数可以通过sysClkRateSet函数设置,一般设置为1 000,即每个tick代表1 ms。这样就可以提供分辨率为ms级的定时器,对大多数应用而言可以满足使用要求。每个定时器对应一个看门狗,同时对应一个任务,使得用户函数运行在任务中,而不是在中断中,这样可以避免操作系统对中断处理函数的种种限制。具体的做法是:在生成定时器时,启动看门狗开始定时,同时创建一个任务等待一个计数信号量(该信号量初始为空,任务处于PEND状态);当定时时间到达时看门狗释放该信号,激活任务,在任务中调用用户函数。这样做的优点在于,提高了效率,减轻了负载,减少了中断中的运算(仅仅是释放信号量);尽管多创建了一个任务,但是在定时器没有触发时任务仍处于PEND状态,对资源占用很小。

3.2 接口设计

提供类似于Windows的接口函数,定时器的唯一索引是id号,操作定时器均通过id完成。分为2种类型定时器:周期性定时器和一次性定时器。周期性定时器可以周期性地触发。一次性定时器则只触发一次,类似于倒计时定时器,触发后看门狗自动删除,相应的任务自动退出。在用户对定时器模块进行初始化后,用户可以在程序的任何地方调用定时器提供的接口。

斩龙小说全集免费阅读

女娲的故事

河源旗袍