jQuery 一次定时器_干货 | 小论定时器玩法(时间轮询法)
EEWORLD
电子资讯 犀利解读
技术干货 每日更新
经常来说,对于一些不复杂的单片机应用,而且对于内存和存储要求比较严格,又需要多分时去处理一些指定的任务,在无法使用RTOS的情况下,使用一个硬件定时器,来建立各种任务时间标志位,是比较通用的做法,但是随着时间标志位变量的增加,代码的维护以及简洁度却越来越艰难。
因此,楼主使用了一种类似线程管理的时间轮询方式(可能用词不当),来进行一个硬件定时器模拟多个软件定时器(以下就说明为线程吧),支持线程注册、注销、挂起、唤醒、处理等接口。在使用上,只需要引用两个接口,即可开始工作。 先说明下此接口文件的头文件的一些变量,THREAD_NUM_MAX是指能支持最大的线程数目,理论上可以达到四个字节长度数目。使用时候先初始化线程Thread_Init,然后把Thread_RunCheck放在硬件定时器上1ms查询一次当作时钟基准,然后Thread_Process放于while里面轮询查找线程标志。需要定时运行某个任务时候(函数),在进入while里面之前使用注册函数Thread_Login即可。主要退出这个函数使用Thread_Logout即可。下面会举个example来说明这些接口的使用。
接下来简单介绍下一些接口的实现。源码会放于附件,具体的可以自行分析理解。
首先来说明下两个结构体定义。首先第一个结构体是对线程状态封装,包括线程运行标识flag,当定时轮询到这个线程此标志位会置位,运行条件con包括单次执行运行条件,也就是说此线程只执行一次,还有多次执行条件,永久执行条件。此些条件在头文件的枚举定义。运行次数表示执行的次数,但为永久执行条件,此cnt赋值为0即可。frep为运行周期,即是多少毫秒运行一次,fun是线程函数的指针。thread_manage结构体是线程管理结构体,里面包含当前线程运行数和挂起数。在这里我们申请下一个静态线程管理实例变量。static struct thread_manage thread;所有的线程状态变量都在这里。
大概说明下线程是如何一个一个轮询执行的。主要在Thread_Process接口里面。
同样再来分析下线程注册接口,这是在初始化的时候需要用到。
线程运行条件核对,放在于1ms的硬件定时器中断或者回调中,以此轮询查找线程运行周期状态是否满足。
在这里使用的是nucle-L011板子,利用cube生成代码工程。使用两个外设,GPIO(LED)和usart,在这里我们新建两个线程,一个500ms点灯,一个1s串口发送数据。
生成的cube代码在文件上,开启定时器中断,并且写上自己的回调函数。
写好自己的线程函数
初始化以及注册线程。
jQuery 一次定时器_干货 | 小论定时器玩法(时间轮询法)相关推荐
- 怎么做轮播图中的小圆点html,JQuery和html+css实现带小圆点和左右按钮的轮播图实例...
是的!你没看错!还是轮播图.这次的JQuery的哟!! CSS代码: /*轮播图 左右按钮 小白点*/ #second_div{ margin-top: 160px; } .img_box{ over ...
- html圆形按钮和箭头同时变色,JQuery和html+css实现带小圆点和左右按钮的轮播图
是的!你没看错!还是轮播图.这次的JQuery的哟!! CSS代码: /*轮播图 左右按钮 小白点*/ #second_div{ margin-top: 160px; } .img_box{ over ...
- stm8s003程序跑飞_微信小程序只玩跳一跳?OUT啦!带你玩更好玩的微信小游戏!...
阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注.内容来源网络,侵权联系删除. ...
- multiprocessing.queue取数据要加锁么_干货 | 小程序多页面接口数据缓存
小程序里面多个页面,有时候会需要用到同一个接口的数据.而这些数据全局来说只需要拉取一遍,如果要存到缓存,要怎么保证其他页面取缓存的时候,数据已经拉取回来了呢? 答案是多页面接口数据缓存实现. 思路设计 ...
- html图片圆点切换,JQuery和html+css实现带小圆点和左右按钮的轮播图
是的!持环开行打进对端架处参触架码我通会法时果你没看错!还是轮播图.这次的JQuery的直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如哟!! CSS代码: /*轮播图 左右按钮 小白点*/ # ...
- java 重置定时器_可重置Java定时器
我想有一个java.utils.Timer与一个可重置时间在java.I需要设置一次off事件发生在X秒.如果在创建定时器的时间和X秒之间没有发生任何事情,则事件会正常发生. 然而,如果在X秒之前,我 ...
- html图片圆点切换,JQuery和html+css实现带小圆点和左右按钮的轮播图实例
搜索按钮 $("#ss").click(function(){ var new_li = $(" "+ $("#skuang").val() ...
- python自己做个定时器_简单实现python定时器
下面介绍以threading模块来实现定时器的方法.(课课家) 使用前先做一个简单试验: import threading def sayhello(): print "hello worl ...
- 杂项设备驱动框架_干货分享丨轻松玩转 Huawei LiteOS 传感框架
摘要:LiteOS传感框架将物联网终端设备上不同类型的传感器统一管理,通过抽象不同类型传感器接口,屏蔽其硬件细节,做到"硬件"无关性,非常方便于物联网设备的开发.维护和功能扩展. ...
最新文章
- python代码壁纸-python实现壁纸批量下载代码实例
- 做小程序费用太高?帮你选一个最省钱的方案
- 9开头的两位数相乘速算法
- 分布式机器学习框架:MxNet 前言
- .NetCore使用skywalking实现实时性能监控
- ubuntu 16.04 源码安装samba并且配置
- Char05 Ansible 最佳实践
- 食品行业十大进销存软件功能大对比,我教你怎么选
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 (转帖)
- 手机号归属地能改吗?支付及通讯行业怎么看?
- 网络用语html,最新网络用语
- 二阶偏导相等的一个充分条件
- 编写有效的测试用例及如何进行用例评审
- 黄淮学院计算机类专业属于几本,黄淮学院是几本院校
- 分享一个动图制作软件,简单实用易操作,迅速得到你想要的GIF效果图
- Wi-Fi 安全协议
- 2022年NOC软件创意编程(学而思赛道)决赛小学初中组python
- linux查看 jre 安装目录
- 操作系统内存管理之伙伴系统
- 利用sham-link实现路由还原