软件定时器实现源码

来源:互联网 发布:radius协议认证端口 编辑:程序博客网 时间:2024/06/03 13:41

原理:软件定时器的原理其实很简单,就是在启动定时器的时候获取当前系统的时间戳start_ts,然后用start_ts加上要定时的时间dly_ts(timeout= start_ts + dly_ts),在心跳定时器中断中查询当前时间计数值(时间戳),如果查询到的计数值大于timeout,说明定时时间到,并调用回调函数执行操作。

资源:1个硬件定时器,用作心跳时钟

下面我们来实现一个简单的基于裸机(不带操作系统)的软件定时器设施,共实现了6个基本接口,设计中没有使用时间轮盘的算法,软件用指针数组代替了需要动态分配内存的列表,从而简化了定时器的实现,定时器的数量可通过调整数组列表的长度来实现,默认最大支持5个软定时器。启动定时器时把定时器指针加入到数组,停止定时器时把定时器对应的指针设定为NULL。


一、timer.h


二、timer.c


三、hal_tick.h


四、hal_tick.c


0 0
原创粉丝点击