定时器

Stm32定时器+PWM

独自空忆成欢 提交于 2019-12-12 21:01:46
以timer3为例,周期1KHz,1ms void time3_init(void) { TIM_TimeBaseInitTypeDef TIM_INIT; NVIC_InitTypeDef NVIC_INIT; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);   // TIM_Period =(时钟频率 / 周期) - 1 TIM_INIT.TIM_Period = (42000000 / 1000) - 1; TIM_INIT.TIM_Prescaler = 0; TIM_INIT.TIM_CounterMode = TIM_CounterMode_Up; TIM_INIT.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,&TIM_INIT); TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); NVIC_INIT.NVIC_IRQChannel=TIM3_IRQn; NVIC_INIT.NVIC_IRQChannelPreemptionPriority=1; NVIC_INIT.NVIC_IRQChannelSubPriority=1; NVIC_INIT.NVIC_IRQChannelCmd=ENABLE; NVIC_Init

基于定时器扫描的状态机按键,实现单击、双击、长按、短长按、超长按的按键识别

痴心易碎 提交于 2019-12-12 03:35:31
基于定时器扫描的状态机按键,实现单击、双击、长按、短长按、超长按的按键识别 说明 本按键例程是基于10ms的定时器扫描,实现了单击、双击、长按、短长按、超长按的按键识别。希望对你也有帮助。 使用说明: 传入一个读取按键管脚电平的函数指针 该函数为返回bool类型,调用参数void 指针赋值给read_key 本例程按键管脚电平低为按下 若电平高为按下,则将返回值取反 注意自己需要提前做好GPIO初始化,设定管脚为输入等 参考如下: bool read_key1 ( void ) // 读按键1管脚电平 { return HAL_GPIO_ReadPin ( KEY0_GPIO_Port , KEY0_Pin ) ; } bool read_key1 ( void ) // 读按键1管脚电平 { return nrf_gpio_pin_read ( KEY1_PIN ) ; } 传入一个按键回调事件的函数指针 该函数为返回void类型,调用参数void 指针赋值给single_click_callback、long_press_callback、double_click_callback、short_long_press_callback、long_long_press_callback 参考如下: void main_key_release_handle ( void ) //

JS---BOM---定时器

隐身守侯 提交于 2019-12-11 20:40:09
定时器 参数1:函数 参数2:时间---毫秒---1000毫秒--1秒 执行过程: 页面加载完毕后, 过了1秒, 执行一次函数的代码, 又过了1秒再执行函数..... 返回值就是定时器的id值 var timeId = setInterval(function () { alert("hello"); }, 2000); //点击按钮,停止定时器 //参数:要清理的定时的id的值 document.getElementById("btn").onclick = function () { window.clearInterval(timeId); }; 来源: https://www.cnblogs.com/jane-panyiyun/p/12024943.html

jq中防止点击过快方法

醉酒当歌 提交于 2019-12-11 12:14:38
如果一个按钮可以在短时间内多次点击,那么有可能会被用户恶意点击,为防止这种情况,可以设定一定时间内只能点击一次,其他时间禁止点击按钮。 1.设置定时器 var click= true; function click(){ if(click){ click= false; //需要执行的事件 ... //定时器 setTimeout(function(){ click = true; }, 5000);//5000毫秒=5秒 } } 2,禁用按钮 $("#btn").attr(“disabled”, “disabled”); //使按钮不能被点击 来源: CSDN 作者: 图图呀 链接: https://blog.csdn.net/weixin_44265867/article/details/103489269

分享一个简单易用的软件定时器模块——基于keil+stm32f103zet+hal库(裸机实现)

☆樱花仙子☆ 提交于 2019-12-11 10:58:58
公众号上看到一个比较好的一个github项目:https://github.com/0x1abin/MultiTimer 今天看了看,简单的,就移植了~ 且看文档的说明, ================================= 分享一个简单易用的软件定时器模块—— MultiTimer 。源码地址: https://github.com/0x1abin/MultiTimer 简介 MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。 使用方法 1、先申请一个定时器管理handle struct Timer timer1; 2、初始化定时器对象,注册定时器回调处理函数,设置定时时间(ms),循环定时触发时间 timer_init(struct Timer* handle, void(*timeout_cb)(), uint32_t timeout, uint32_t repeat); 3、启动定时器 timer_start(&timer1); 4、设置1ms的硬件定时器循环调用 timer_ticks() 以提供时间基准 void HAL_SYSTICK_Callback(void){ timer_ticks();} 5、在主循环调用定时器后台处理函数 int main() {

CVI 异步定时器

与世无争的帅哥 提交于 2019-12-11 10:43:01
CVI 异步定时器建立和使用 首先向主程序的源文件添加必要的头文件,以及向工程里添加异步定时器的.C文件,它的原始文件放在CVI安装目录里面,地址一般是C:\Program Files\National Instruments\CVI85\toolslib\toolbox,里面有三种文件,扩展名分别是.h / .c /.fp,其中.fp是控件的资源文件,异步定时器的名字是asynctmr,把这三个文件分别加入工程相应的目录中,然后再在工程文件中载入头文件 //添加头文件 #include “asynctmr.h” //初始化 static void *asyncCBData = “”; //异步定时器 static int timerid; //异步定时器句柄 int CVICALLBACK asynCB (int reserved, int timerId, int event, void *callbackData, int eventData1, int eventData2);//自定义异步定时器函数 //main函数里 timerid = NewAsyncTimer (1.0, -1, 0, asynCB, asyncCBData);//建立一个异步定时器 //在用的地方设置时间和使能 SetAsyncTimerAttribute (timerid, ASYNC_ATTR

[iOS Animation]-CALayer 定时器动画演示一

不打扰是莪最后的温柔 提交于 2019-12-10 07:59:28
定时器的动画 我可以指导你,但是你必须按照我说的做。 -- 骇客帝国 在第10章“缓冲”中,我们研究了 CAMediaTimingFunction ,它是一个通过控制动画缓冲来模拟物理效果例如加速或者减速来增强现实感的东西,那么如果想更加真实地模拟物理交互或者实时根据用户输入修改动画改怎么办呢?在这一章中,我们将继续探索一种能够允许我们精确地控制一帧一帧展示的基于定时器的动画。 定时帧 动画看起来是用来显示一段连续的运动过程,但实际上当在固定位置上展示像素的时候并不能做到这一点。一般来说这种显示都无法做到连续的移动,能做的仅仅是足够快地展示一系列静态图片,只是看起来像是做了运动。 我们之前提到过iOS按照每秒60次刷新屏幕,然后 CAAnimation 计算出需要展示的新的帧,然后在每次屏幕更新的时候同步绘制上去, CAAnimation 最机智的地方在于每次刷新需要展示的时候去计算插值和缓冲。 在第10章中,我们解决了如何自定义缓冲函数,然后根据需要展示的帧的数组来告诉 CAKeyframeAnimation 的实例如何去绘制。所有的Core Animation实际上都是按照一定的序列来显示这些帧,那么我们可以自己做到这些么? NSTimer 实际上,我们在第三章“图层几何学”中已经做过类似的东西,就是时钟那个例子,我们用了 NSTimer 来对钟表的指针做定时动画

手写JS定时器弹框

烈酒焚心 提交于 2019-12-10 05:19:04
在angularjs项目中,直接手写一个系统定时器弹框: JS如下: //双录系统定时器弹框 var countdown = 11; function settime(){ if(countdown == -1){ window.clearTimeout(timer); reutrn; }else{ countdown--; } var timer = setTimeout(function(){ settime() },1000) $scope.timer = countdown; $scope.$apply(); } 如上如有问题,欢迎留言指正,谢谢。 版权声明:本文为博主原创文章,未经博主允许不得转载 。 来源: CSDN 作者: qq_26780317 链接: https://blog.csdn.net/qq_26780317/article/details/103463847

多线程:定时器的实现

假装没事ソ 提交于 2019-12-09 21:52:57
JDK5之前的定时器:Timer类 javax.util.Timer是一个对线程进行计时执行的类,它的构造方法和成员方法如下 示例1:指定延迟后执行一次 //任务定时器 new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("爆炸!"); } },10000);//指定10秒后爆炸,单位毫秒 //定义一个9秒的秒表 for (int i = 1; i < 10 ; i++) { try { Thread.sleep(1000);//让当前线程每过1秒执行一次 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(i); } 示例2:从指定延迟开始后重复执行 // 使用的是schedule的另一个重载形式 // 任务定时器 new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("爆炸!"); } },10000,3000);//指定10秒后爆炸,之后每隔3秒爆炸一次 示例3:双重定时器 双重定时器就是计时器里面再递归嵌套计时器,不断循环调用

JavaScript定时器方法

落花浮王杯 提交于 2019-12-09 15:59:01
一、setTimeout() 延迟性操作 1 window.setTimeout(function(){ 2 console.log('派大星');//延迟了4秒 3 },4000); 4 console.log('海绵宝宝'); 5 6 //定时器 异步运行 7 function hello(){ 8 alert("hello"); 9 } 10 11 var t1 = window.setTimeout(hello,1000);//使用方法名字执行方法 12 var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 二、setInterval() 定时输出 1 var num = 0; 2 var timer = null; 3 timer = setInterval(function(){ 4 num++; 5 if(num>5){ 6 clearInterval(timer); 7 return; 8 } 9 console.log('num:'+num); 10 },1000);//1秒输出一次 11 12 13 //实时刷新 时间单位为毫秒 14 setInterval('refreshQuery()',8000); 15 /* 刷新查询 */ 16 function refreshQuery(){ 17