-
软件定时器
应用背景
我们在做单片机程序时,经常会用到多个定时器,这时我们就需要各个配置多个不同的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的初始化程序即可,其它内容可以直接引用,不需要修改。
&
- 2023-04-15 22:30:04下载
- 积分:1
-
8051滚动解码HCS301
8051滚动解码433M 315M HCS301编码,带滚动加密算法,完整工程,可以编译,很值得参考和借鉴,keil编译平台
- 2023-05-01 12:25:04下载
- 积分:1
-
java based system using secure
这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院这是学院
- 2023-08-03 01:05:03下载
- 积分:1
-
STM32F103 TVOC模块驱动
STM32F103 TVOC模块驱动 基于TVOC传感器模块,使用STM32F103C8T6 程序分为串口读取部分和调用部分 均为自己写,如有问题和优化的地方欢迎指出
- 2022-01-26 05:34:50下载
- 积分:1
-
dm900 linux驱动
dm900 linux 网络驱动 c语言源代码 ,直接编译可用
- 2022-02-14 15:49:38下载
- 积分:1
-
Linux 驱动程序 XPT2046
XPT2046 触摸控制器的 Linux 驱动程序代码。这就被接口与 LPC1788。它是很容易使用。到此触摸控制器的通信是通过 SPI。
- 2022-11-02 08:15:03下载
- 积分:1
-
控制佳能相机RelCtrl
使用佳能相机A620开发包以及jpeglib库开发的控制佳能相机的软件(VC++源代码),可以实现实时预览及抓拍等功能。
- 2022-04-28 22:15:07下载
- 积分:1
-
LCD Atmega 2560
- 2022-07-21 17:57:39下载
- 积分:1
-
TCP客户端实验 stm32
TCP客户端实验,STM32 LWIP 大家懂的。。。。。。。。。。。。。。。。。。
- 2022-01-28 22:12:33下载
- 积分:1
-
STM32 万向节控制器
是基于 32 位 STM32F103RC 开放源码 3 轴万向节无刷控制器。
- 2022-05-22 08:06:12下载
- 积分:1