首页| JavaScript| HTML/CSS| Matlab| PHP| Python| Java| C/C++/VC++| C#| ASP| 其他|
购买积分 购买会员 激活码充值

您现在的位置是:虫虫源码 > 其他 > 软件定时器

软件定时器

  • 资源大小:69.11 kB
  • 上传时间:2021-06-30
  • 下载次数:0次
  • 浏览次数:0次
  • 资源积分:1积分
  • 标      签: 驱动 c 软件 定时器

资 源 简 介

应用背景     我们在做单片机程序时,经常会用到多个定时器,这时我们就需要各个配置多个不同的TIMER,有时TIMER不够用,有时TIMER配置过多,标志过多,程序写着写着就乱了,就算是理清了,也会造成程序可读性差,可移植性低,对硬件依赖性强的缺点。     为了解决这个问题,我们可以用程序实现一个软件定时器,在内存允许的范围内,它可以实现无数个定时器、计数器功能,当需要一个定时器,只需要在程序里定义一个定时器变量,通过不同接口的调用,就可以实现定时功能;实现这一功能,只需要占用一个硬件定时器即可,大大减少了硬件TIMER的占用,提高了程序的可移植性,降低程序的复杂度。   关键技术     在这里,我们需要借鉴操作系统架构里的系统嘀嗒功能。先初始化一个硬件TIMER作为系统的心跳,用这个TIMER来驱动一个全局变量sys_pulse的递增;然后利用程序来查询变量当前值判断系统程序的执行时间,从而得现时间的间隔,再通过事件发送程序来通知任务定时已到。     一个软件定时器变量,至少需要包括三个元素,开始时间start_time,定时时长interval,事件内容event;     每当程序启动一个定时器,将当前系统的sys_pulse值赋于开始时间变量start_time, 设定定时器的定时时长interval, 和事件内容event, 然后在主循环里不断查询sys_pulse 是否大于 start_timer + interval,如果大于,则表明此定时器定时结束,然后调用事件发送函数告诉任务,定时已到,开始执行任务。     如果用户要移植此程序,只需要修改timer_init()内硬件TIMER的初始化程序即可,其它内容可以直接引用,不需要修改。   &

文 件 列 表

通用软件定时器
common_soft_timer
VIP VIP
0.183537s