Timer定时器Demo

74 篇文章 0 订阅
1 篇文章 0 订阅
public class Reminder extends TimerTask {

	@Override
	public void run() {
	System.out.println("任务跑起来了...");
		
	}
	
	
  public static void main(String[] args) {
	Timer timer = new Timer();
	Reminder task = new Reminder();
    timer.schedule(task, new Date(), 1000);
}
}

上面这个是每一秒执行一次。下面这个为指定时间执行一次

public class Reminder extends TimerTask {

	@Override
	public void run() {
	System.out.println("任务跑起来了...");
		
	}
	
	
  public static void main(String[] args) {
	Timer timer = new Timer();
	Reminder task = new Reminder();
	   Calendar calendar = Calendar.getInstance();
	   calendar.set(Calendar.HOUR_OF_DAY, 17);//控制小时
	   calendar.set(Calendar.MINUTE, 26);//控制分钟
	   calendar.set(Calendar.SECOND, 0);//控制秒
	   Date time = calendar.getTime();//执行任务时间为17:26:00
	
    timer.schedule(task, time, 1000);
}
}

 

在FreeRTOS中,定时器函数不是在Tick中断中执行的。Tick中断只负责判断定时器是否超时,而定时器函数的执行是在任务中完成的。你可以通过创建一个任务来执行定时器函数。下面是一个示例: ```c #include "FreeRTOS.h" #include "task.h" #include "timers.h" TimerHandle_t TimerHandle1; TimerHandle_t TimerHandle2; static void timer1Intterp(TimerHandle_t timer1) { printf("timer1 is doing\r\n"); } static void timer2Intterp(TimerHandle_t timer2) { printf("timer2 is doing\r\n"); } void timerTask(void *pvParameters) { TimerHandle_t timer = (TimerHandle_t)pvParameters; while(1) { vTaskDelay(pdMS_TO_TICKS(100)); if (xTimerIsTimerActive(timer) && xTimerIsTimerExpiredFromISR(timer)) { xTimerReset(timer, 0); if (timer == TimerHandle1) { timer1Intterp(TimerHandle1); } else if (timer == TimerHandle2) { timer2Intterp(TimerHandle2); } } } } int main( void ) { prvSetupHardware(); TimerHandle1 = xTimerCreate("timer1", pdMS_TO_TICKS(100), pdFALSE, 0, NULL); TimerHandle2 = xTimerCreate("timer2", pdMS_TO_TICKS(100), pdTRUE, 0, NULL); xTaskCreate(timerTask, "timerTask1", configMINIMAL_STACK_SIZE, (void *)TimerHandle1, tskIDLE_PRIORITY + 1, NULL); xTaskCreate(timerTask, "timerTask2", configMINIMAL_STACK_SIZE, (void *)TimerHandle2, tskIDLE_PRIORITY + 1, NULL); vTaskStartScheduler(); return 0; } ``` 在这个示例中,我们创建了两个定时器TimerHandle1和TimerHandle2,并且分别创建了两个任务timerTask1和timerTask2来执行定时器函数timer1Intterp和timer2Intterp。定时器函数的执行是在任务中完成的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值