Last active
August 29, 2015 14:22
-
-
Save hduffddybz/f66311b61ca66e9b63ab to your computer and use it in GitHub Desktop.
rms_init
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <rtthread.h> | |
#define THREAD_PRIORITY 25 | |
#define THREAD_STACK_SIZE 512 | |
#define THREAD_TIMESLICE 5 | |
/* 指向线程控制块的指针 */ | |
static rt_thread_t tid1 = RT_NULL, tid2 = RT_NULL, tid3 = RT_NULL; | |
static struct rt_rms rms1, rms2, rms3 ; | |
/* 线程入口 */ | |
static void thread_entry(void* parameter) | |
{ | |
rt_tick_t now, last, diff = 0; | |
int a; | |
rt_rms_init(&rms1, "rms1", 10); | |
last = rt_tick_get(); | |
while(1) | |
{ | |
for(a = 0; a < 1000; a++); | |
rt_rms_endcycle(&rms1); | |
now = rt_tick_get(); | |
diff = now; | |
diff = diff - last; | |
last = now; | |
rt_kprintf("thread1:%d\n", diff); | |
} | |
} | |
static void thread2_entry(void* parameter) | |
{ | |
rt_tick_t now, last, diff = 0; | |
int a; | |
rt_rms_init(&rms2, "rms2", 20); | |
last = rt_tick_get(); | |
while(1) | |
{ | |
for(a = 0; a < 1000; a++); | |
rt_rms_endcycle(&rms2); | |
now = rt_tick_get(); | |
diff = now; | |
diff = diff - last; | |
last = now; | |
rt_kprintf("thread2:%d\n", diff); | |
if(rt_rms_detach(&rms2) == RT_EOK) | |
break; | |
} | |
} | |
static void thread3_entry(void* parameter) | |
{ | |
rt_tick_t now, last, diff = 0; | |
int a; | |
rt_rms_init(&rms3, "rms2", 20); | |
last = rt_tick_get(); | |
while(1) | |
{ | |
for(a = 0; a < 1000; a++); | |
rt_rms_endcycle(&rms3); | |
now = rt_tick_get(); | |
diff = now; | |
diff = diff - last; | |
last = now; | |
rt_kprintf("thread3:%d\n", diff); | |
if(rt_rms_detach(&rms3) == RT_EOK) | |
break; | |
} | |
} | |
/* 用户应用入口 */ | |
int rt_application_init() | |
{ | |
/* 创建线程1 */ | |
tid1 = rt_thread_create("t1", | |
thread_entry, (void*)1, /* 线程入口是thread_entry, 入口参数是1 */ | |
THREAD_STACK_SIZE, THREAD_PRIORITY + 1, THREAD_TIMESLICE); | |
if (tid1 != RT_NULL) | |
rt_thread_startup(tid1); | |
else | |
return -1; | |
tid2 = rt_thread_create("t2", | |
thread2_entry, (void *)1, | |
THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); | |
if(tid2 != RT_NULL) | |
rt_thread_startup(tid2); | |
else | |
return -1; | |
tid3 = rt_thread_create("t3", | |
thread3_entry, (void *)1, | |
THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); | |
if(tid3 != RT_NULL) | |
rt_thread_startup(tid3); | |
else | |
return -1; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment