From 339344fb5ed2c7d1813263c85a551da7ff8be539 Mon Sep 17 00:00:00 2001 From: CYFS <2805686936@qq.com> Date: Tue, 3 Sep 2024 22:05:40 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rt-thread-standard/programming-manual/timer/timer.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md index 318b4a0..d2d3622 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md @@ -378,6 +378,7 @@ static void timeout2(void *parameter) int timer_sample(void) { + cnt = 0; /* 创建定时器 1 周期定时器 */ timer1 = rt_timer_create("timer1", timeout1, RT_NULL, 10, @@ -455,6 +456,7 @@ static void timeout2(void* parameter) int timer_static_sample(void) { + cnt = 0; /* 初始化定时器 */ rt_timer_init(&timer1, "timer1", /* 定时器名字是 timer1 */ timeout1, /* 超时时回调的处理函数 */ -- Gitee From 696a64a61488604b444c2d0e753a15b1fd4b052f Mon Sep 17 00:00:00 2001 From: CYFS <2805686936@qq.com> Date: Wed, 11 Sep 2024 16:15:16 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programming-manual/timer/timer.md | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md index d2d3622..6d4e4a9 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md @@ -355,7 +355,7 @@ rt_err_t rt_timer_control(rt_timer_t timer, rt_uint8_t cmd, void* arg); /* 定时器的控制块 */ static rt_timer_t timer1; static rt_timer_t timer2; -static int cnt = 0; +static rt_uint8_t cnt = 0; /* 定时器 1 超时函数 */ static void timeout1(void *parameter) @@ -365,6 +365,8 @@ static void timeout1(void *parameter) /* 运行第 10 次,停止周期定时器 */ if (cnt++>= 9) { + /* 清除计数值 */ + cnt = 0; rt_timer_stop(timer1); rt_kprintf("periodic timer was stopped! \n"); } @@ -376,9 +378,26 @@ static void timeout2(void *parameter) rt_kprintf("one shot timer is timeout\n"); } +/* 检查,清理上次的定时器 */ +static void check_timer_exist(void) +{ + if (timer1 != RT_NULL) + { + rt_timer_delete(timer1); + timer1 = RT_NULL; + } + if (timer2 != RT_NULL) + { + rt_timer_delete(timer2); + timer2 = RT_NULL; + } +} + int timer_sample(void) { - cnt = 0; + /* 检查,清理上次的定时器 */ + // check_timer_exist(); + /* 创建定时器 1 周期定时器 */ timer1 = rt_timer_create("timer1", timeout1, RT_NULL, 10, @@ -399,6 +418,15 @@ int timer_sample(void) /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(timer_sample, timer sample); + +/* 导出到 msh 命令列表中 */ +int timer_sample_del(void) +{ + /* 检查,清理定时器 */ + check_timer_exist(); + return 0; +} +MSH_CMD_EXPORT(timer_sample_del, timer sample delete); ``` 仿真运行结果如下: -- Gitee From 059cbe9a3b5908c818fad7918288413d1374a781 Mon Sep 17 00:00:00 2001 From: CYFS <2805686936@qq.com> Date: Wed, 11 Sep 2024 21:10:08 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rt-thread-standard/programming-manual/timer/timer.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md index 6d4e4a9..d6ec590 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md @@ -418,15 +418,6 @@ int timer_sample(void) /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(timer_sample, timer sample); - -/* 导出到 msh 命令列表中 */ -int timer_sample_del(void) -{ - /* 检查,清理定时器 */ - check_timer_exist(); - return 0; -} -MSH_CMD_EXPORT(timer_sample_del, timer sample delete); ``` 仿真运行结果如下: -- Gitee From c843b66b6adc1f3a4e98cea40e4b782b8c81a0ad Mon Sep 17 00:00:00 2001 From: CYFS <2805686936@qq.com> Date: Fri, 13 Sep 2024 10:50:12 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programming-manual/timer/timer.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md index d6ec590..115dd25 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md @@ -396,7 +396,7 @@ static void check_timer_exist(void) int timer_sample(void) { /* 检查,清理上次的定时器 */ - // check_timer_exist(); + check_timer_exist(); /* 创建定时器 1 周期定时器 */ timer1 = rt_timer_create("timer1", timeout1, @@ -463,6 +463,7 @@ static void timeout1(void* parameter) /* 运行 10 次 */ if (cnt++>= 9) { + cnt = 0; rt_timer_stop(&timer1); } } @@ -473,9 +474,23 @@ static void timeout2(void* parameter) rt_kprintf("one shot timer is timeout\n"); } +/* 检查,清理上次的定时器 */ +static void check_timer_exist(void) +{ + if (rt_object_find("timer1", RT_Object_Class_Timer) != RT_NULL) + { + rt_timer_detach(&timer1); + } + if (rt_object_find("timer2", RT_Object_Class_Timer) != RT_NULL) + { + rt_timer_detach(&timer2); + } +} + int timer_static_sample(void) { - cnt = 0; + /* 检查,清理上次的定时器 */ + check_timer_exist(); /* 初始化定时器 */ rt_timer_init(&timer1, "timer1", /* 定时器名字是 timer1 */ timeout1, /* 超时时回调的处理函数 */ -- Gitee From 07e937fa2a3e3a14ef41c39b55ce95a5464e1f1a Mon Sep 17 00:00:00 2001 From: CYFS <2805686936@qq.com> Date: Fri, 13 Sep 2024 11:06:32 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programming-manual/timer/timer.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md index 115dd25..7c83cc9 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md @@ -396,7 +396,7 @@ static void check_timer_exist(void) int timer_sample(void) { /* 检查,清理上次的定时器 */ - check_timer_exist(); + check_timer_exist(); /* 创建定时器 1 周期定时器 */ timer1 = rt_timer_create("timer1", timeout1, @@ -463,7 +463,7 @@ static void timeout1(void* parameter) /* 运行 10 次 */ if (cnt++>= 9) { - cnt = 0; + cnt = 0; rt_timer_stop(&timer1); } } @@ -479,18 +479,18 @@ static void check_timer_exist(void) { if (rt_object_find("timer1", RT_Object_Class_Timer) != RT_NULL) { - rt_timer_detach(&timer1); + rt_timer_detach(&timer1); } if (rt_object_find("timer2", RT_Object_Class_Timer) != RT_NULL) { - rt_timer_detach(&timer2); + rt_timer_detach(&timer2); } } int timer_static_sample(void) { - /* 检查,清理上次的定时器 */ - check_timer_exist(); + /* 检查,清理上次的定时器 */ + check_timer_exist(); /* 初始化定时器 */ rt_timer_init(&timer1, "timer1", /* 定时器名字是 timer1 */ timeout1, /* 超时时回调的处理函数 */ -- Gitee