定时器

关于C51学习中定时器工作方式的应用

风格不统一 提交于 2019-12-09 14:46:19
定时器有四种工作方式,在许多博客上都有详细的解释 四种工作方式:方式0,1,2,3在实际的应用中 又怎么去选择呢,作为一个新手,学习知识对于如何应用我还是很好奇 工作方式0,计数溢出个数为2^13-N。 此工作方式下每次溢出定时时间为8.192ms, 工作方式1时,计数溢出值为2^16-N。 计数溢出时间为6.225ms,如定时1s,先每次定时50ms 工作方式2时,计数溢出值为2^8-N。 有自动重载功能,在TH0 中存储原来的值,TH1当做计数/计数用。在串口通信时计算波特率类的要用这个。 自己写的有点浅,是在看另外一个博客对此有了很深很直观的理解吧 https://blog.csdn.net/qq_43578913/article/details/98950536 来源: https://www.cnblogs.com/forange/p/12010796.html

获取验证码的按钮状态变化的实现

梦想与她 提交于 2019-12-09 10:11:32
我们现在的很多应用中都需要用户注册之后登陆,而其方式,在移动端多是通过手机号注册和登陆,那么获取验证码的操作就必不可少,包括一些有提现功能的应用,需要在提现时验证用户手机号,都是其应用的场景; 今天刚好有个朋友问到了这里,我就看了一下之前写的代码,那段代码又乱又杂,实现方式上也大可优化一下,之前只是为自己项目定制的,正好借这个机会重新梳理一番; 该功能的实现前前后后我改了3遍,走的弯路这里就不写了,直接来分析当前的实现方案: 首先,我们列一下需求: 1)点击“获取验证码”按钮时,实现验证码倒计时120秒,期间按钮不可点击,走完120秒时候,按钮重新回到“获取验证码”按钮可点击的状态; 2)程序运行的情况下,只要120秒没走完,那么每次进入到该界面时,都需要继续进行倒计时; 3)若用户将程序进程杀掉,重新启动应用时,进入该界面,仍需继续进行倒计时; 基本的要求就是这样的,其中比较重要的有这样几点: 1)按钮存在两种状态的切换,一种是倒计时状态(每秒都会变化)不可点击;一种是“获取验证码状态” 可点击; 2)无论什么情况下,只要验证码没走完,进入该界面,就必须接着让他走完,这里涉及到一开始显示的倒计时数的判断和计算; 3)在倒计时的过程中,我们需要每秒回调刷新界面显示; 基于此,代码的实现方案如下:(为了方便 我就直接粘代码了) 新建LLValidCodeManager类

Node.js实战6:定时器,使用timer延迟执行。

那年仲夏 提交于 2019-12-09 08:23:29
setTimeout 在nodejs中,通过setTimeout函数可以达到延迟执行的效果,这个函数也常被称为定时器。 一个简单的例子: console.log( (new Date()).getSeconds() );setTimeout(function(){ console.log( (new Date()).getSeconds() ); console.log("hello world"); //延迟一秒执行},1000); 执行效果: 可以看到,执行时,先输出了当时时间的秒数,过1秒后,输入出秒和hello world,间隔正是1秒。上面的参数中1000,单位是毫秒,即1秒。 在nodejs中,常用setTimeout来实现异步操作。 bind 还有一种高级的用法,看例程: function bomb(){ this.message = "bomb";}bomb.prototype.explode =function(){ console.log(this.message);}var bomb = new bomb();setTimeout(bomb.explode.bind(bomb),1000); 即:使用bind可以确保这个方法绑定到正确的对象上,这样可以访问到这个对象的内部属性。 执行效果: clearTimeout 通过clearTimeout函数

函数的防抖---js

≯℡__Kan透↙ 提交于 2019-12-08 14:47:32
执行规定一段时间后执行 <input type="text" id="inp" /> <script> var oInp = document.getElementById("inp") var timer = null; function ajax(e) { // 需要执行的函数 console.log(this.value); } oInp.oninput = function() { clearTimeout(timer); // 结束上一次的定时器 var that = this timer = setTimeout(function() { // 1000ms后执行定时器内的事件 ajax.apply(that, arguments) // 使用apply将this指向到该函数内 }, 1000) } </script> 来源: https://www.cnblogs.com/PasserByOne/p/12005742.html

10、PWM

偶尔善良 提交于 2019-12-07 17:57:37
定义 PWM(Pulse Width Modulation),脉冲宽度调制。 脉冲:方波,频率(freq) 宽度:高电平的宽度,占空比(duty) PWM的模式分为1和2 PWM1:TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态 PWM2:TIMx_CNT<TIMx_CCR1,通道1便为无效状态,否则为有效状态 TIMx_CNT由TIM_TimeBaseStructure.TIM_Period决定 TIMx_CCR1由TIM_SetComparex(x:1、2、3、4)函数决定 有效状态由TIM_OCInitStructure.TIM_OCPolarity决定 其中频率值由计数值决定,占空比由比较值决定 例 #include "stm32f4xx.h" #include "sys.h" static GPIO_InitTypeDef GPIO_InitStructe; static USART_InitTypeDef USART_InitStructe; static NVIC_InitTypeDef NVIC_InitStructe; static TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructe; //串口初始化 void usart_init(uint32_t baud) { //使端口A通电 RCC

09、硬件定时器

自古美人都是妖i 提交于 2019-12-07 17:33:29
定义 设置等待时间,到达后则执行指定操作的硬件。 STM32F407 的定时器有以下特征 具有基本的定时功能,也有 PWM 输出(灯光亮度控制、电机的转速)、脉冲捕获功能(红外捕捉)。 2 个高级控制定时器、10 个通用定时器和 2 个基本定时器 高级控制定时器(TIM1 和 TIM8) 具有 16 位定时器功能,也具有 PWM 输出高级控制功能,一个定时器支持多路的 PWM 输出。 通用定时器(TIM2 到 TIM5) 具有 16 位定时功能,也具有 PWM 输出控制功能,一个定时器支持 1 路的 PWM 输出。 通用定时器(TIM9 到 TIM14) 具有 16 位定时功能,也具有 PWM 输出控制功能,一个定时器支持 1 路的 PWM 输出。 基本定时器(TIM6 和 TIM7) 具有 16 位定时功能。 注: 1)TIM 是 TIMER 英文的缩写。 2)通用定时器与高级控制定时器 来源: https://www.cnblogs.com/lp06/p/12002631.html

JS定时器做物体运动

泄露秘密 提交于 2019-12-07 15:09:33
JS定时器是函数 setInterval(函数体/函数名 , 时间) 清楚定时器 clearInterval(函数) 时间单位(毫秒) 1000毫秒 = 1秒   首先我们要知道用JS定时器能干什么?定时器的原理是什么?   我的理解为,定时器是能让一个物体根据规定的时间做规定的移动,而物体运动是怎样的效果呢?你可以理解为一个人走路,要走到某个位置,要走到这个位置肯定是一步步移动才能达到,而不是瞬间就到达的,所以定时器的作用更像是让物体像人一样走到相应的位置 比如:   规定一个横形状方块,其中包裹一个小方块,然后将大方块定位到屏幕之外,再通过某个事件触发使大方块出现: before: now:   可以看到红色部分是负值,所以我们要动过物体移动,来使红色部分一点点移动出来, 获取到div1 设置定时器 给其鼠标放置其上和离开时时的事件 封装move函数 一 一讲解, 在启动定时器之前,我们要先清除一次定时器,为的是放置多重触发时使速度越来越快 然后设置移动速度 speed  因为你事件是置上和离开事件,传递的参数为0和-600;所以我们要判断 当距离(target)每次减去offsetLeft大于0时,就向上取整,小于0时候向下取整, 然后设置什么时候关闭定时器的条件 在这里是,当我们鼠标置上时或者离开时候达到我们给定的target参数我们就清除定时器

iOS的定时器用法

大憨熊 提交于 2019-12-07 01:23:36
定时器在项目中还是经常用到的,很多情况下为了省事我们都是在主线程中直接用,但这样经常会造成阻塞,影响定时器的准确性,对时间精度要求比较高的地方还会给人很不好的体验,比如卡顿等等,所以,定时器的使用最好放在子线程中,下面就记录几种定时器的用法: 1、NSThread NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(newThread) object:nil]; [thread start]; - (void)newThread{ @autoreleasepool{ [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(requestMessages) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] run]; } } 2、GCD 首先定义timer: 这里有一点疑惑:timer若作为成员变量(定义放在@interface里面)定时器可以正常使用,但是在方法里面再去定义的定义的话定时器就完全不起作用了,还请知道的原因的小伙伴多多指教: NSTimeInterval period = 60.0; //设置时间间隔 dispatch

iOS 定时器

↘锁芯ラ 提交于 2019-12-07 01:23:17
iOS里面使用的定时器类型一般有三种NSTimer、CADisplayLink、GCD。 1、最精准的定时器 - GCD #import "ViewController.h" @interface ViewController () // 必须要有强引用,不然对象会被释放 @property (nonatomic , strong) dispatch_source_t timer ; @end @implementation ViewController -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSLog(@"__%s__",__func__); #warning 重复执行的GCD定时器 // 1、基于GCD的定时器,创建timer对象: // 参数一:source的类型DISPATCH_SOURCE_TYPE_TIMER 表示定时器类型 // 参数二:描述内容,比如线程ID // 参数三:详细描述内容 // 参数四:队列,决定GCD的队列在哪个线程执行 dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0

iOS NSTimer 定时器用法总结

浪尽此生 提交于 2019-12-06 11:18:43
NSTimer在IOS开发中会经常用到,尤其是小型游戏,然而对于初学者时常会注意不到其中的内存释放问题,将其基本用法总结如下: 一、初始化方法:有五种初始化方法,分别是 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo; - (void)viewDidLoad { [super viewDidLoad]; //初始化一个Invocation对象 NSInvocation * invo = [NSInvocation invocationWithMethodSignature:[[self class] instanceMethodSignatureForSelector:@selector(init)]]; [invo setTarget:self]; [invo setSelector:@selector(myLog)]; NSTimer * timer = [NSTimer timerWithTimeInterval:1 invocation:invo repeats:YES]; //加入主循环池中 [[NSRunLoop mainRunLoop]addTimer:timer forMode