-
软件定时器
应用背景
我们在做单片机程序时,经常会用到多个定时器,这时我们就需要各个配置多个不同的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
-
LWIP LPC2378 移植
LWIP LPC2378 移植 实现UDP功能,中断触发
This project details how to use the LWIP networking stack with supported NXP LPC devices and boards. The LWIP stack provides low level networking support and is ideal for networking applications that require a low memory footprint. The NXP LWIP port supports both standalone (raw API) and threaded (FreeRTOS) configurations.
- 2023-03-22 01:05:03下载
- 积分:1
-
Linux设备驱动
Linux设备驱动开发详解的书本光盘源码,对学习Linux设备驱动特别有帮助,对于没有买原版书的学习者边看书,边看源代码就可以实现了,希望对学习Linux设备驱动开发的朋友有帮助
- 2022-01-26 04:03:23下载
- 积分:1
-
stm8l stvd 固件库
标准stm8l固件库 stvd 编译器 comic C代码
/**
******************************************************************************
* @file stm8l10x.h
* @brief This file contains all HW registers definitions and memory mapping.
* @author STMicroelectronics - MCD Application Team
* @version V1.0.1
* @date 06/19/2009
******************************************************************************
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING
- 2022-07-12 19:27:43下载
- 积分:1
-
omapl138 nor flash 驱动
omap l138 最新的nor falsh 驱动,包插 erease ,write,read等函数哦。。。。
驱动适用于S29GL128P10TFC010。
已经经过大量的测试,是工业级成熟的代码。
- 2023-08-17 15:45:03下载
- 积分:1
-
STM32F4模拟U盘
应用背景
用于把SPI Flash或是SD卡当U盘来使用。
关键技术STM32F4用SPI Flash或SD卡模拟U盘,开机的时候先检测SD卡和SPI FLASH是否存在,如果存在则获取其容量,并显示在LCD上面(如果不存在,则报错)。之后开始USB配置,在配置成功之后就可以在电脑上发现两个可移动磁盘。我们用DS1来指示USB正在读写,并在液晶上显示出来,同样,我们还是用DS0来指示程序正在运行。
- 2023-05-03 14:10:10下载
- 积分:1
-
3线OLED驱动
OLED3线SPI驱动,包括OLED基本的驱动程序,部分文字驱动,图片驱动,达到了基本的显示要求,是使用OLED开发入门的前提
- 2022-03-07 08:30:47下载
- 积分:1
-
MODBUS gsd文件
MODBUS gsd文件,
Module = "read 8 bits(0xxxx)" 0x10
Ext_Module_Prm_Data_Len = 6
Ext_User_Prm_Data_Const(0) = 0x00,0x01,0x00,0x00,0x00,0x08
Ext_User_Prm_Data_Ref(0) = 4
Ext_User_Prm_Data_Ref(2) = 5
EndModule
Module = "r
- 2023-02-01 16:30:04下载
- 积分:1
-
si114x_uv,测试紫外线的源代码,分做5级
这个是用来开发紫外线的Si1142的源代码,代码很详细,要的是C8051开发的,欢迎大家指点与共享。
- 2022-09-02 06:40:02下载
- 积分:1
-
寒江独钓——随书源码
寒江独钓——Windows内核安全编程,随书源码,包含:基于内存形式的虚拟磁盘驱动、文件系统过滤驱动、TDi防火墙、虚拟网卡驱动、ndis协议驱动等
- 2022-07-20 16:53:02下载
- 积分:1