当前位置: 首页 > 编程日记 > 正文

jQuery 一次定时器_干货 | 小论定时器玩法(时间轮询法)

EEWORLD

电子资讯 犀利解读

技术干货 每日更新

205688024_2_20201028092212322

经常来说,对于一些不复杂的单片机应用,而且对于内存和存储要求比较严格,又需要多分时去处理一些指定的任务,在无法使用RTOS的情况下,使用一个硬件定时器,来建立各种任务时间标志位,是比较通用的做法,但是随着时间标志位变量的增加,代码的维护以及简洁度却越来越艰难。

因此,楼主使用了一种类似线程管理的时间轮询方式(可能用词不当),来进行一个硬件定时器模拟多个软件定时器(以下就说明为线程吧),支持线程注册、注销、挂起、唤醒、处理等接口。在使用上,只需要引用两个接口,即可开始工作。     先说明下此接口文件的头文件的一些变量,THREAD_NUM_MAX是指能支持最大的线程数目,理论上可以达到四个字节长度数目。使用时候先初始化线程Thread_Init,然后把Thread_RunCheck放在硬件定时器上1ms查询一次当作时钟基准,然后Thread_Process放于while里面轮询查找线程标志。需要定时运行某个任务时候(函数),在进入while里面之前使用注册函数Thread_Login即可。主要退出这个函数使用Thread_Logout即可。下面会举个example来说明这些接口的使用。

205688024_3_20201028092212369_wm

接下来简单介绍下一些接口的实现。源码会放于附件,具体的可以自行分析理解。


首先来说明下两个结构体定义。首先第一个结构体是对线程状态封装,包括线程运行标识flag,当定时轮询到这个线程此标志位会置位,运行条件con包括单次执行运行条件,也就是说此线程只执行一次,还有多次执行条件,永久执行条件。此些条件在头文件的枚举定义。运行次数表示执行的次数,但为永久执行条件,此cnt赋值为0即可。frep为运行周期,即是多少毫秒运行一次,fun是线程函数的指针。thread_manage结构体是线程管理结构体,里面包含当前线程运行数和挂起数。在这里我们申请下一个静态线程管理实例变量。static struct thread_manage thread;所有的线程状态变量都在这里。

205688024_4_20201028092212665_wm

大概说明下线程是如何一个一个轮询执行的。主要在Thread_Process接口里面。

205688024_5_20201028092212775_wm

同样再来分析下线程注册接口,这是在初始化的时候需要用到。

205688024_6_2020102809221325_wm

线程运行条件核对,放在于1ms的硬件定时器中断或者回调中,以此轮询查找线程运行周期状态是否满足。

205688024_7_20201028092213290_wm

在这里使用的是nucle-L011板子,利用cube生成代码工程。使用两个外设,GPIO(LED)和usart,在这里我们新建两个线程,一个500ms点灯,一个1s串口发送数据。

205688024_8_20201028092213447_wm 生成的cube代码在文件上,开启定时器中断,并且写上自己的回调函数。

205688024_9_20201028092213697_wm 写好自己的线程函数

205688024_10_20201028092213994_wm 初始化以及注册线程。

205688024_11_20201028092214259_wm

相关文章:

第一次团队冲刺2

今天在自己电脑上搭建了webservice,学习了很多关于webservice的知识,但还有很多不懂的。 还没有做好连接,其他的如查询等也没做。转载于:https://www.cnblogs.com/318abc/p/4504085.html

基于四元数互补滤波的无人机姿态解算

导航坐标系为东北天(ENU),其与机体坐标系(b)的方向余弦矩阵为CbcC_{b}^{c}Cbc​

Unity粒子系统创建VFX游戏特效学习教程 Visual Effects in Unity Particle Systems [Beginner’s Guide]

在Unity中学习高级粒子系统和视觉效果创建。初级到中级 你会学到: 游戏的视觉效果 Unity粒子系统 Unity中的Vfx 创建Unity视觉效果的初级到中级指南 课程获取:Unity粒子系统创建VFX游戏特效学习教程-云桥网 MP4 |视频:h264,1280720 |音频:AAC&#xf…

gulp 配置自动化前端开发

有的人说,grunt已经廉颇老矣,尚能饭否。gulp已经成为了未来的趋势,或许将撼动grunt的地位。 那么就得看看gulp到底优势在哪里,在我最近的使用中发现,我的到了一个结论:“grunt廉颇老矣...”。 gulp是基于流…

iphone相册怎么加密_iphone相册加密码锁,保护隐私

在以往很多使用iphone的小伙伴都会遇到一个难题,在不越狱的情况下进行给相册进行设置密码锁,这是一个无法完成的目标,在前几期也为大家分享了相册照片加密方法,但是用起来很是不方便,今天就为大家分享利用时间限额达到…

redis 常用配置

1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid …

hexo定制个人博客matery主体打开公式渲染

在主体的_config文件里面将enable调整为true mathjax:enable: truecdn: https://cdn.bootcss.com/mathjax/2.7.5/MathJax.js?configTeX-AMS-MML_HTMLorMML在文章的上方添加mathjax: true 公式编辑器:点击编辑 行内添加:∂2∂x2\frac{\partial^2 }{\pa…

Revit LT 2022基本培训 Revit LT 2022 Essential Training

Autodesk Revit是当今最流行的建筑信息建模(BIM)解决方案之一。并且,Revit LT提供了该产品的入门级版本,带有成对的向下功能集,非常适合许多BIM工作流。在本课程中,请加入Chant Bright,她首先解释了Revit和Revit LT之间…

华为云电脑.模式_华为云电脑支持全线,Huawei Share免费更新

样张答案:上面黑鲨下面红魔。最近,华为推出了华为云电脑APP。即一款登陆就可以利用云主机的Windows系统在手机和平板上运行PC程序的软件。不过,并不支持所有产品使用。昨天,华为宣布5月14日起,安卓8.0及以上版本的华为…

Web开发七步骤

1. 环境搭建 2. 编码 3. 上线 4. 数据分析 5. 持续交付 6. 遗留系统 7. 回顾与新架构转载于:https://www.cnblogs.com/h-pursuit/p/5261844.html

Sybase IQ导出文件的几种方式

IQ有四种方法,将表的数据导出为文本文件:1、重定向 SELECT * FROM TABLE1 ># D:MYDATATABLE1.TXT -- 文件生成在执行语句的客户端上 2、通过选项导出 SET TEMPORARY OPTION Temp_Extract_Name1 /data/mydata/table1.txt; SET TEMPORARY OPTION Tem…

Window环境下,Qt中文出现乱码解决办法

在头文件声明的地方添加&#xff1a; #pragma execution_character_set("utf-8")#ifndef NETWIDGET_H #define NETWIDGET_H#include <QWidget> #include <QHostInfo> #include <QNetworkInterface> //防止中文出现乱码 #pragma execution_charact…

Revit初学者完整指南 The Complete Revit Guide for Beginners

学习设计、建模、注释和渲染Revit项目 你会学到什么 在Revit中建模 开发建筑信息模型 从模型文件导出图形和图形。 在Revit中渲染 开发参数化建筑和墙截面 开发建筑立面图和平面图 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz 语言&…

HDU5583 上海赛铜牌题

这道题的意思是给你一个01串&#xff0c; 定义这串的优美值为连续相同的数字的平方和&#xff0c; 现在可以改变这些串中一个字符&#xff0c; 问你优美值最大是多少&#xff1f; 我们可以预处理出d1[i]i左边和str[i]相同的字符个数&#xff0c; d2[i]i右边和str[i]相同的字符个…

jquery click 第一次没用_【通知】同济大学研究生会20202021学年第一次主席联席会...

为加强同济大学研究生会与各学院(系)研究生会的交流与合作&#xff0c;促进学校研究生工作的顺利开展&#xff0c;特邀请各院(系、所)研会主席参加本学年第一次主席联席会。同济大学研究生会 2020-2021 学年第一次主席联席会(四平路校区)会议时间2020年10月18日(周日)上午9&…

ref和out 传递参数(C#)

1.参数传递默认都是传递栈空间里面存储的内容 2.如果添加了ref那么传递的都是栈空间地址&#xff0c;而不再是栈空间里面的内容 3.如果添加了out,那么传递的也是栈空间的地址 1 //写一个方法计算一个int类型数组中每个元素的总和以及最大值和最小值2 /// <summary&…

Qt实现主界面圆角化

添加头文件&#xff1a; #include <QPainter> #include <QBitmap>在构造函数里面添加如下代码即可实现&#xff1a; this->setWindowFlags(Qt::FramelessWindowHint);//新建无边框窗口,可以把边框完全去掉QBitmap bmp(this->size());bmp.fill();QPainter p(…

终极Git课程——在虚幻引擎中的应用 The Ultimate Git Course – with Applications in Unreal Engine

了解Git和GitHub、虚幻引擎C项目的版本控制等等&#xff01; 你会学到: Git是如何工作的 如何从命令行使用Git 使用GitHub、GitHub桌面应用程序、Visual Studio中的Git工具和VS代码等Git工具 在虚幻引擎5和虚幻引擎4中使用Git跟踪虚幻引擎项目 在Visual Studio和Visual Studio…

stm32双向可控硅调压程序_单向可控硅和双向可控硅的测量与模块测试

可控硅&#xff0c;是可控硅整流元件的简称&#xff0c;是一种具有三个PN结的四层结构的大功率半导体器件&#xff0c;亦称为晶闸管。具有体积小、结构相对简单、功能强等特点&#xff0c;是比较常用的半导体器件之一。可控硅导通条件&#xff1a;一是可控硅阳极与阴极间必须加…

shellinabox安装

Shell In A Box&#xff08;发音是shellinabox&#xff09;是一款基于Web的终端模仿器&#xff0c;由Markus Gutschke开辟而成。它有内置的Web办事器&#xff0c;在指定的端口上作为一个基于Web的SSH客户端而运行&#xff0c;可认为你供给一个Web终端模仿器&#xff0c;以便应用…

Spring JdbcTemplate的queryForList(String sql , ClassT elementType)易错使用--转载

原文地址&#xff1a; http://blog.csdn.net/will_awoke/article/details/12617383 一直用ORM&#xff0c;今天用JdbcTemplate再次抑郁了一次。 首先看下这个方法&#xff1a; 乍一看&#xff0c;我想传个泛型T&#xff08;实际代码执行中&#xff0c;这个T可以是我自定义的一个…

QGC添加显示多架无人机飞行轨迹

在FlightDisplayViewMap.qml文件中找到如下部分&#xff1a;&#xff08;上面是显示单架无人机轨迹&#xff0c;已注释&#xff0c;下面是显示多架轨迹&#xff09; /*// Add trajectory lines to the map 增加轨迹线MapPolyline {id: trajectoryPolylineline.width: 3…

UE中的自动化学习课程

使用蓝图、C和Python 你会学到什么 Becoming an Unreal Automation Expert 通过在虚幻中自动化繁琐重复的任务来提高您的工作效率 了解Python、C和Blutilities如何在虚幻中工作。他们之间是如何联系的&#xff0c;对彼此有什么好处&#xff1f; 通过学习自动化&#xff0c;大幅…

怎么让电脑运行速度变快_分享几种电脑运行速度慢的解决方法_windows7教程

如果电脑操作系统使用时间久了&#xff0c;我们的电脑开机速度就会变的越来越慢&#xff0c;会经常出现卡顿等&#xff0c;影响到我们的工作效率等等。那如果遇到电脑运行速度满怎么解决呢&#xff1f;小编就跟大家聊聊电脑运行速度慢的解决方法。1. 卸载清理软件与垃圾。多用户…

《机电传动控制》学习笔记03-1

转载于:https://www.cnblogs.com/xiaobaicai05/p/5267069.html

5月“.公司”域名注册总量TOP15:西部数码第四

IDC评述网&#xff08;idcps.com&#xff09;05月18日报道&#xff1a;根据ntldstats.com发布的最新数据显示&#xff0c;截止至5月15日17:00&#xff0c;在国内外“.公司”域名总量十五强域名商中&#xff0c;仅西部数码、第一商务、耐思尼克与时代互联的市场份额实现上涨&…

个人博客打不开时检查下github.com的ip地址是否更改/修改博客内容字体、颜色及大小

1.修改ip解析 1.WinR 输入CMD 2.打开终端输入 ping github.com查看github.com的IP地址&#xff0c;将域名解析里面的ip替换为新的ip即可&#xff01; 替换之后就不会出现如下界面&#xff1a; 完成以上步骤以后即可出现正确界面&#xff1a; 2.修改CSDN博客字体、颜色及大小…

UE:增强现实AR可视化基本概念

Unreal: AR Visualization 01 Basic Concepts 通过Epic Games探索虚幻引擎&#xff0c;并通过一个真实世界的项目获得增强现实(AR)基础知识的概述。在本课程中&#xff0c;这是三部分系列的第一部分&#xff0c;讲师Emmanuel Henri介绍了增强现实的定义和AR项目的要求&#xff…

Spark源码分析之七:Task运行(一)

在Task调度相关的两篇文章《Spark源码分析之五&#xff1a;Task调度&#xff08;一&#xff09;》与《Spark源码分析之六&#xff1a;Task调度&#xff08;二&#xff09;》中&#xff0c;我们大致了解了Task调度相关的主要逻辑&#xff0c;并且在Task调度逻辑的最后&#xff0…

solidworks画白色金属光泽_美人的共通点就是卧蚕,卧蚕真的太重要了,没有也要画出来...

在美学上&#xff0c;卧蚕加上双眼皮最能呈现「电眼」风采。美人们的共通点就是「卧蚕」&#xff0c;它主宰着眼神的命运&#xff0c;不仅能提升下眼睑魅力&#xff0c;让眼神看起来灵动温和&#xff0c;也能让眼睛放大&#xff0c;还提升你的好人缘呢。有木有发现&#xff0c;…