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

软件定时器

于 2023-04-15 发布 文件大小:69.11 kB
0 106
下载积分: 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 个回复

  • 3tiersarchitecture演示
    介绍
    2022-06-14 21:51:12下载
    积分:1
  • TDC-GP21 激光测距源代码
    应用背景 在脉冲式激光测距仪的设计当中,时差测量(time of flight measurement)成为了一个 影响整个测量精度最关键的因素。德国acam 公司设计的时间数字转换芯片TDC-GP21 为激光测距的时间测量提供了完美的解决方法。 在测量时间脉冲之前,首先我们建议先测试一下单片机和tdc-gp2 的通信是否正常。因为在做测量之 前,我们要保证首先单片机和gp21 已经建立通信。那么如果后面出现问题,则可以不再考虑spi 通信问 题。具体测试可以首先写入寄存器1,然后从结果寄存器5(8 位寄存器)里面读取写寄存器1 的高8 位。如果spi 通信正常,那么结果寄存器5 应该可以时时反应结果寄存器1 的高8 位。 关键技术关于spi通信: 我们手册上所讲的spi 通信需要将时钟相位置1,时钟极性置0。但是对于不同的单片机似乎有所不同。 在msp430 中的spi 通信时钟相位和时钟极性的定义与摩托罗拉正好相反。所以在进行通信调试的时候, 请改变一下时钟相位和时钟极性进行测试,看看到底适用哪种情况
    2022-10-13 05:50:04下载
    积分:1
  • MB9BF506 i ~ 2c 和串口程序
    微 MB9BF506 并 24LC08 EEPROMA 函数从地址 a 函数读取缓冲区写入自助餐地址 a 功能来清除整个 eepromA 函数读取整个 eeprom 的 I2C 驱动程序
    2022-01-24 17:37:22下载
    积分:1
  • stm32 code modbus RTU
    资源描述stm32 modbus rtu ,stm32f107shixianduiModbusRTUshujuchuanshu caijideng.Modbusshigongyexieye
    2022-04-17 08:23:46下载
    积分:1
  • 应用于linux3.0内核的stk1160和v4l2的代码注释
    有部分修改加注释,3.0内核可用可移植,已经有makefile和config文件了。里面加了两篇v4l2的代码注释和框架简介,对解读stk1160的驱动代码非常有用!!
    2022-02-11 19:20:14下载
    积分:1
  • 商业级二维条码枪源码
    资源描述51内核二维码条形码扫描枪程序
    2022-06-26 00:12:05下载
    积分:1
  • cc1101实现组网,可带30个从机。。
    资源描述本程序是鉴于cc1101无线模块实现的自组网技术,目前可以自动添加从机,也可以网内通信,格式的话是自动长度的数据包长,有crc校验,开发环境是iccavr,对于那些想研究cc1101开发的小伙伴,可以直接拿过来开发,单片机是meg48,可以仔细研究一下吧
    2022-11-22 13:25:03下载
    积分:1
  • msp430f149 link lcm20*4 with 3.3V I2C interface
    资源描述msp430f149 link lcm20*4 with I2C 3.3V interface , also have 10channels 12bits adc function
    2022-06-16 19:43:02下载
    积分:1
  • 无刷电调程序
    应用背景详细的完整的无刷电调源程序,适合学习无刷电调的朋友参考学习关键技术基于atmega16的无刷电调源程序,有详细注解,6步换相法电流检测,通信和按键启停控制。
    2022-12-16 23:25:03下载
    积分:1
  • CS5532的C语言代码
    CS5532是称重仪表常用的A/D转换芯片,本资料是一份CS5532的C语言代码-CS5532 weighing instruments commonly used in the A/D conversion chip, the data is the C code for a CS5532
    2023-08-20 11:20:04下载
    积分:1
  • 696518资源总数
  • 106164会员总数
  • 18今日下载