Skip to content

Instantly share code, notes, and snippets.

@hduffddybz
Last active August 29, 2015 14:22
Show Gist options
  • Save hduffddybz/f66311b61ca66e9b63ab to your computer and use it in GitHub Desktop.
Save hduffddybz/f66311b61ca66e9b63ab to your computer and use it in GitHub Desktop.
rms_init
#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