登录
首页 » 驱动 » 软件定时器

软件定时器

于 2023-04-15 发布 文件大小:69.11 kB
0 96
下载积分: 2 下载次数: 1

代码说明:

应用背景     我们在做单片机程序时,经常会用到多个定时器,这时我们就需要各个配置多个不同的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的初始化程序即可,其它内容可以直接引用,不需要修改。   &

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • linux 超声波测试
    基于linux内核2.6.36内核下的驱动例程,需要make生产.ko驱动文件,滤波就自己添加了,另外有测试应用程序。
    2022-02-16 10:17:10下载
    积分:1
  • AD7766的,FPGA,VERILOG
    AD7766的驱动,驱动频率最高128k,板卡时钟24MHz,经PLL分频后输入驱动,该程序在altera cyclone IVE上验证通过;带仿真文件
    2022-02-16 02:08:10下载
    积分:1
  • std.c DSP头文件
    我想说,你如果调试DMA可能会用到它。但是这个呢,又不是经常用到。我擦。我只想说,我只是上传一个.h文件而已,为什么要50个字呢!!不晓得现在够不够。如果不够的话,我再写几个吧。这下应该差不多了哈!!
    2022-03-21 00:45:58下载
    积分:1
  • RC522源代码
    该驱动经过实际测试,目前已经运用到产品中,所以,放心使用,下载了,绝不后悔!功能函数包括:寻卡、防冲撞、选定卡、验证卡密码、读取M1卡一块数据、写M1卡一块数据、命令卡进入休眠状态、RC522计算CRC16 复位RC522,设置RC522的工作方式,读取RC522寄存器。写RC522寄存器,置和清RC522寄存器,开启和关闭天线,扣款和充值!
    2022-05-14 03:04:07下载
    积分:1
  • android游戏开发之摇杆控制源码
    android游戏开发之摇杆控制源码
    2022-05-25 23:25:01下载
    积分:1
  • 硬盘串号读取源码
    程序可以方便的读取系统硬盘串号,用于对软件中硬盘的绑定,以及注册获取硬盘编号的操作。程序对WinAPI进行了二次的封装,只需略作修改即可封装为自己的接口,或者封装为动态链接库使用。其中HDSerial类为硬盘编号读取类!
    2022-06-11 14:19:33下载
    积分:1
  • 51的PWM程序,适合初学者
    本程序是基于51的直流电机控制程序,用PWM来驱动直流电机,具有加速减速,以及控制直流电机的转向等功能,适合初学者
    2022-05-27 18:38:26下载
    积分:1
  • C8051f310定时器延迟1s程序
    C8051f定时器1中断精确延时1s的程序。C8051F通常除了有两个标准的8051中的计数器/ 请点击左侧文件开始预览 !预览只提供20%的代码片段,完整代码需下载后查看 加载中 侵权举报
    2022-07-13 18:36:10下载
    积分:1
  • 嵌入式设备Modbus通信协议源码
    目前版本支持如下的功能码: 读输入寄存器 (0x04) 读保持寄存器 (0x03) 写单个寄存器 (0x06) 写多个寄存器 (0x10) 读/写多个寄存器 (0x17) 读取线圈状态 (0x01) 写单个线圈 (0x05) 写多个线圈 (0x0F) 读输入状态 (0x02) 报告从机标识 (0x11) 本实现基于最新的标准并且与标准完全兼容。接收和传输Modbus RTU/ASCII数据帧是通过一个由硬件提取层的调用来驱动状态机来实现的。这就使得该协议非常容易移植到其他的平台之上。当收到一个完整的数据帧后,该数据帧被传入Modbus应用层,数据帧的内容在该层得到解析。为例方便增加新的Modbus功能,在应用层通提供了Hooks。 请点击左侧文件开始预览 !预览只提供20%的代码片段,完整代码需下载后查看 加载中 侵权举报
    2022-11-09 00:25:04下载
    积分:1
  • si4432 的51程序
    完整SI4432的51驱动收发程序资料,对刚接触SI4432无线模块非常地实用,简单明了,下载来可以直接使用,
    2022-08-23 02:15:06下载
    积分:1
  • 696518资源总数
  • 105901会员总数
  • 40今日下载