1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| #include "rtthread.h"
#include "main.h"
/*
*************************************************************************
* 变量
*************************************************************************
*/
/* 定义软件定时器控制块 */
static rt_timer_t swtmr1 = RT_NULL;
static rt_timer_t swtmr2 = RT_NULL;
/*
*************************************************************************
* 函数声明
*************************************************************************
*/
static void swtmr1_callback(void* parameter);
static void swtmr2_callback(void* parameter);
/************************* 全局变量声明 ****************************/
static uint32_t TmrCb_Count1 = 0;
static uint32_t TmrCb_Count2 = 0;
int main(void)
{
/* 创建一个软件定时器 */
swtmr1 = rt_timer_create("swtmr1_callback", /* 软件定时器的名称 */
swtmr1_callback,/* 软件定时器的回调函数 */
0, /* 定时器超时函数的入口参数 */
5000, /* 软件定时器的超时时间(周期回调时间) */
RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_SOFT_TIMER);
/* 软件定时器模式 一次模式 */
/* 启动定时器 */
if (swtmr1 != RT_NULL)
rt_timer_start(swtmr1);
/* 创建一个软件定时器 */
swtmr2 = rt_timer_create("swtmr2_callback", /* 软件定时器的名称 */
swtmr2_callback,/* 软件定时器的回调函数 */
0, /* 定时器超时函数的入口参数 */
1000, /* 软件定时器的超时时间(周期回调时间) */
RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER);
/* 软件定时器模式 周期模式 */
/* 启动定时器 */
if (swtmr2 != RT_NULL)
rt_timer_start(swtmr2);
}
/**
* @brief swtmr1_thread线程主体
* @param parameter 参数
* @retval 无
*/
static void swtmr1_callback(void* parameter)
{
uint32_t tick_num1;
TmrCb_Count1++; /* 每回调一次加一 */
tick_num1 = (uint32_t)rt_tick_get(); /* 获取滴答定时器的计数值 */
rt_kprintf("swtmr1_callback %d \n", TmrCb_Count1);
rt_kprintf("TICK=%d\n", tick_num1);
}
/**
* @brief swtmr2_thread线程主体
* @param parameter 参数
* @retval 无
*/
static void swtmr2_callback(void* parameter)
{
uint32_t tick_num2;
TmrCb_Count2++; /* 每回调一次加一 */
tick_num2 = (uint32_t)rt_tick_get(); /* 获取滴答定时器的计数值 */
rt_kprintf("swtmr2_callback %d \n", TmrCb_Count2);
rt_kprintf("TICK=%d\n", tick_num2);
}
|