diff options
Diffstat (limited to 'examples/kernel')
35 files changed, 343 insertions, 37 deletions
diff --git a/examples/kernel/cpuusage.c b/examples/kernel/cpuusage.c index 490061ddb7..5f9d480139 100644 --- a/examples/kernel/cpuusage.c +++ b/examples/kernel/cpuusage.c @@ -1,3 +1,11 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ #include <rtthread.h> #include <rthw.h> diff --git a/examples/kernel/event_simple.c b/examples/kernel/event_simple.c index e377e721bb..d2a2948fc7 100644 --- a/examples/kernel/event_simple.c +++ b/examples/kernel/event_simple.c @@ -1,4 +1,12 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ +/* * 程序清单:事件例程 * * 这个程序会创建3个动态线程及初始化一个静态事件对象 diff --git a/examples/kernel/heap_malloc.c b/examples/kernel/heap_malloc.c index 271202ad8f..e2fa4511e7 100644 --- a/examples/kernel/heap_malloc.c +++ b/examples/kernel/heap_malloc.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/heap_realloc.c b/examples/kernel/heap_realloc.c index bc7b56a999..ab603c5d8d 100644 --- a/examples/kernel/heap_realloc.c +++ b/examples/kernel/heap_realloc.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/mbox_send_wait.c b/examples/kernel/mbox_send_wait.c index 86513fcb13..67f358ecea 100644 --- a/examples/kernel/mbox_send_wait.c +++ b/examples/kernel/mbox_send_wait.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:邮箱例程_发送阻塞 * * 这个程序用来测试邮箱发送时候的阻塞情况。 diff --git a/examples/kernel/mbox_simple.c b/examples/kernel/mbox_simple.c index 5d588decb3..3f39bc0016 100644 --- a/examples/kernel/mbox_simple.c +++ b/examples/kernel/mbox_simple.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:邮箱例程 * * 这个程序会创建2个动态线程,一个静态的邮箱对象,其中一个线程往邮箱中发送邮件, diff --git a/examples/kernel/memp_simple.c b/examples/kernel/memp_simple.c index ab8f3b94ed..055db41912 100644 --- a/examples/kernel/memp_simple.c +++ b/examples/kernel/memp_simple.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:内存池例程 * * 这个程序会创建一个静态的内存池对象,2个动态线程。两个线程会试图分别从内存池中获得 diff --git a/examples/kernel/messageq_simple.c b/examples/kernel/messageq_simple.c index 51b371f59c..62504bebb7 100644 --- a/examples/kernel/messageq_simple.c +++ b/examples/kernel/messageq_simple.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:消息队列例程 * * 这个程序会创建3个动态线程,一个线程会从消息队列中收取消息;一个线程会定时给消 diff --git a/examples/kernel/mutex_priority.c b/examples/kernel/mutex_priority.c index f647fc4039..c1db934157 100755 --- a/examples/kernel/mutex_priority.c +++ b/examples/kernel/mutex_priority.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 创建7个进程,tid20、tid21、tid22、tid23、tid24、tid25、tid26、tid27、tid28、tid29 * 各任务优先级分别为20、21、22、23、24、25、26、27、28、29, * 其中tid26最先获得锁,tid22不需要使用到互斥锁,其他所有进程均需要使用互斥锁, diff --git a/examples/kernel/mutex_simple.c b/examples/kernel/mutex_simple.c index afbab3a3e1..4f6c5d7d28 100644 --- a/examples/kernel/mutex_simple.c +++ b/examples/kernel/mutex_simple.c @@ -1,5 +1,10 @@ /* - * 程序清单: + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * */ #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/semaphore_buffer_worker.c b/examples/kernel/semaphore_buffer_worker.c index db3285c74b..5e4723b417 100644 --- a/examples/kernel/semaphore_buffer_worker.c +++ b/examples/kernel/semaphore_buffer_worker.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:信号量实现生产者消费者间的互斥 * * 在这个程序中,会创建两个线程,一个是生成者线程worker一个是消费者线程thread diff --git a/examples/kernel/semaphore_dynamic.c b/examples/kernel/semaphore_dynamic.c index dc088e6e44..564d73c496 100644 --- a/examples/kernel/semaphore_dynamic.c +++ b/examples/kernel/semaphore_dynamic.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:动态信号量 * * 这个例子中将创建一个动态信号量(初始值为0 )及一个动态线程,在这个动态线程中 diff --git a/examples/kernel/semaphore_priority.c b/examples/kernel/semaphore_priority.c index d6e3ce3914..7e37a826cb 100644 --- a/examples/kernel/semaphore_priority.c +++ b/examples/kernel/semaphore_priority.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/semaphore_producer_consumer.c b/examples/kernel/semaphore_producer_consumer.c index a240cfa8b2..b6f996ff57 100644 --- a/examples/kernel/semaphore_producer_consumer.c +++ b/examples/kernel/semaphore_producer_consumer.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:生产者消费者例子 * * 这个例子中将创建两个线程用于实现生产者消费者问题 diff --git a/examples/kernel/semaphore_static.c b/examples/kernel/semaphore_static.c index cb199886a4..641b0bc7c9 100644 --- a/examples/kernel/semaphore_static.c +++ b/examples/kernel/semaphore_static.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:静态信号量 * * 这个例子中将创建一个静态信号量(初始值为0 )及一个静态线程,在这个静态线程中 diff --git a/examples/kernel/tc_comm.c b/examples/kernel/tc_comm.c index f6493389a6..7153412aa0 100644 --- a/examples/kernel/tc_comm.c +++ b/examples/kernel/tc_comm.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include "tc_comm.h" #ifdef RT_USING_FINSH #include <finsh.h> diff --git a/examples/kernel/tc_comm.h b/examples/kernel/tc_comm.h index aee1fec2d2..17dd8eb924 100644 --- a/examples/kernel/tc_comm.h +++ b/examples/kernel/tc_comm.h @@ -1,7 +1,16 @@ + +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ #ifndef __TC_COMM_H__ #define __TC_COMM_H__ -/* +/* * RT-Thread TestCase * */ diff --git a/examples/kernel/tc_sample.c b/examples/kernel/tc_sample.c index 212875b716..272edc0e39 100644 --- a/examples/kernel/tc_sample.c +++ b/examples/kernel/tc_sample.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/thread_delay.c b/examples/kernel/thread_delay.c index f9404d704c..50740e2c8f 100644 --- a/examples/kernel/thread_delay.c +++ b/examples/kernel/thread_delay.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/thread_delete.c b/examples/kernel/thread_delete.c index 72eb4ec008..924a823f35 100644 --- a/examples/kernel/thread_delete.c +++ b/examples/kernel/thread_delete.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:删除线程 * * 这个例子会创建两个线程,在一个线程中删除另外一个线程。 diff --git a/examples/kernel/thread_detach.c b/examples/kernel/thread_detach.c index 9370f212e1..d0d72d017b 100644 --- a/examples/kernel/thread_detach.c +++ b/examples/kernel/thread_detach.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:线程脱离 * * 这个例子会创建两个线程,在其中一个线程中执行对另一个线程的脱离。 diff --git a/examples/kernel/thread_dynamic.c b/examples/kernel/thread_dynamic.c index 0afb7f8f84..35c67c02fc 100644 --- a/examples/kernel/thread_dynamic.c +++ b/examples/kernel/thread_dynamic.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/thread_dynamic_simple.c b/examples/kernel/thread_dynamic_simple.c index 28944b1f34..dc378a6696 100644 --- a/examples/kernel/thread_dynamic_simple.c +++ b/examples/kernel/thread_dynamic_simple.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:动态线程 * * 这个程序会初始化2个动态线程,它们拥有共同的入口函数,但参数不相同 diff --git a/examples/kernel/thread_priority.c b/examples/kernel/thread_priority.c index 0045b0e578..abf45bbe07 100644 --- a/examples/kernel/thread_priority.c +++ b/examples/kernel/thread_priority.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/thread_resume.c b/examples/kernel/thread_resume.c index cea814616f..e776466326 100644 --- a/examples/kernel/thread_resume.c +++ b/examples/kernel/thread_resume.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:唤醒线程 * * 这个例子中将创建两个动态线程,低优先级线程将挂起自身,然后 diff --git a/examples/kernel/thread_same_priority.c b/examples/kernel/thread_same_priority.c index c7da2087a0..a238e24932 100644 --- a/examples/kernel/thread_same_priority.c +++ b/examples/kernel/thread_same_priority.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/thread_static.c b/examples/kernel/thread_static.c index 3033f2cda1..9234255679 100644 --- a/examples/kernel/thread_static.c +++ b/examples/kernel/thread_static.c @@ -1,3 +1,12 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/thread_static_simple.c b/examples/kernel/thread_static_simple.c index d9e3ff6f61..e0021d2c5f 100644 --- a/examples/kernel/thread_static_simple.c +++ b/examples/kernel/thread_static_simple.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:静态线程 * * 这个程序会初始化2个静态线程,它们拥有共同的入口函数,但参数不相同 diff --git a/examples/kernel/thread_suspend.c b/examples/kernel/thread_suspend.c index 947cc3cbf6..2219c7b8d6 100644 --- a/examples/kernel/thread_suspend.c +++ b/examples/kernel/thread_suspend.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:挂起线程 * * 这个例子中将创建两个动态线程,高优先级线程将在一定时刻后挂起低优先级线程。 diff --git a/examples/kernel/thread_yield.c b/examples/kernel/thread_yield.c index 4ed6b90e2a..97e57ba841 100644 --- a/examples/kernel/thread_yield.c +++ b/examples/kernel/thread_yield.c @@ -1,6 +1,12 @@ /* - * 程序清单: + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * */ + #include <rtthread.h> #include "tc_comm.h" diff --git a/examples/kernel/timer_control.c b/examples/kernel/timer_control.c index 9fcb0d4c4d..c92d558d5c 100644 --- a/examples/kernel/timer_control.c +++ b/examples/kernel/timer_control.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:动态定时器例程 * * 这个例程会创建1个动态周期型定时器对象,然后控制它进行定时时间长度的更改。 @@ -14,7 +23,7 @@ static rt_uint8_t count; static void timeout1(void* parameter) { rt_tick_t timeout = 50; - + rt_kprintf("periodic timer is timeout\n"); count ++; diff --git a/examples/kernel/timer_dynamic.c b/examples/kernel/timer_dynamic.c index 1260d50c09..35d7b845dd 100644 --- a/examples/kernel/timer_dynamic.c +++ b/examples/kernel/timer_dynamic.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:动态定时器例程 * * 这个例程会创建两个动态定时器对象,一个是单次定时,一个是周期性的定时 diff --git a/examples/kernel/timer_static.c b/examples/kernel/timer_static.c index 884927bbc3..1523869b9a 100644 --- a/examples/kernel/timer_static.c +++ b/examples/kernel/timer_static.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:定时器例程 * * 这个程序会初始化2个静态定时器,一个是单次定时,一个是周期性的定时 diff --git a/examples/kernel/timer_stop_self.c b/examples/kernel/timer_stop_self.c index 38ec9c441b..584bc4128e 100644 --- a/examples/kernel/timer_stop_self.c +++ b/examples/kernel/timer_stop_self.c @@ -1,4 +1,13 @@ /* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* * 程序清单:动态定时器例程 * * 这个例程会创建1个动态周期型定时器对象 diff --git a/examples/kernel/timer_timeout.c b/examples/kernel/timer_timeout.c index d1a7099e2e..40bbbf2831 100644 --- a/examples/kernel/timer_timeout.c +++ b/examples/kernel/timer_timeout.c @@ -1,21 +1,30 @@ /* - * �����嵥����Ϣ�������� + * Copyright (c) 2006-2021, RT-Thread Development Team * - * �������ᴴ��3����̬�̣߳�һ���̻߳����Ϣ��������ȡ��Ϣ��һ���̻߳ᶨʱ���� - * Ϣ���з�����Ϣ��һ���̻߳ᶨʱ����Ϣ���з��ͽ�����Ϣ�� + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * + */ + +/* + * 程序清单:消息队列例程 + * + * 这个程序会创建3个动态线程,一个线程会从消息队列中收取消息;一个线程会定时给消 + * 息队列发送消息;一个线程会定时给消息队列发送紧急消息。 */ #include <rtthread.h> #include "tc_comm.h" -/* ָ���߳̿��ƿ��ָ�� */ +/* 指向线程控制块的指针 */ static rt_thread_t tid = RT_NULL; -/* ��Ϣ���п��ƿ� */ +/* 消息队列控制块 */ static struct rt_messagequeue mq; -/* ��Ϣ�������õ��ķ�����Ϣ���ڴ�� */ +/* 消息队列中用到的放置消息的内存池 */ static char msg_pool[2048]; -/* ��ʱ���Ŀ��ƿ� */ +/* 定时器的控制块 */ static struct rt_timer timer; static rt_uint16_t no = 0; static void timer_timeout(void* parameter) @@ -27,24 +36,24 @@ static void timer_timeout(void* parameter) rt_mq_send(&mq, &buf[0], length); } -/* �߳���ں��� */ +/* 线程入口函数 */ static void thread_entry(void* parameter) { char buf[64]; rt_err_t result; - /* ��ʼ����ʱ�� */ - rt_timer_init(&timer, "timer", /* ��ʱ�������� timer1 */ - timer_timeout, /* ��ʱʱ�ص��Ĵ������� */ - RT_NULL, /* ��ʱ��������ڲ��� */ - 1, /* ��ʱ���ȣ���OS TickΪ��λ����1��OS Tick */ - RT_TIMER_FLAG_PERIODIC); /* �����Զ�ʱ�� */ + /* 初始化定时器 */ + rt_timer_init(&timer, "timer", /* 定时器名字是 timer1 */ + timer_timeout, /* 超时时回调的处理函数 */ + RT_NULL, /* 超时函数的入口参数 */ + 1, /* 定时长度,以OS Tick为单位,即1个OS Tick */ + RT_TIMER_FLAG_PERIODIC); /* 周期性定时器 */ while (1) { rt_memset(&buf[0], 0, sizeof(buf)); - /* ����Ϣ�����н�����Ϣ */ + /* 从消息队列中接收消息 */ result = rt_mq_recv(&mq, &buf[0], sizeof(buf), 1); if (result == RT_EOK) { @@ -59,16 +68,16 @@ static void thread_entry(void* parameter) int timer_timeout_init() { - /* ��ʼ����Ϣ���� */ - rt_mq_init(&mq, "mqt", - &msg_pool[0], /* �ڴ��ָ��msg_pool */ - 128 - sizeof(void*), /* ÿ����Ϣ�Ĵ�С�� 128 - void* */ - sizeof(msg_pool), /* �ڴ�صĴ�С��msg_pool�Ĵ�С */ - RT_IPC_FLAG_FIFO); /* ����ж���̵߳ȴ������������ȵõ��ķ���������Ϣ */ + /* 初始化消息队列 */ + rt_mq_init(&mq, "mqt", + &msg_pool[0], /* 内存池指向msg_pool */ + 128 - sizeof(void*), /* 每个消息的大小是 128 - void* */ + sizeof(msg_pool), /* 内存池的大小是msg_pool的大小 */ + RT_IPC_FLAG_FIFO); /* 如果有多个线程等待,按照先来先得到的方法分配消息 */ - /* �����߳� */ + /* 创建线程 */ tid = rt_thread_create("t", - thread_entry, RT_NULL, /* �߳������thread_entry, ��ڲ�����RT_NULL */ + thread_entry, RT_NULL, /* 线程入口是thread_entry, 入口参数是RT_NULL */ THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (tid != RT_NULL) rt_thread_startup(tid); @@ -81,38 +90,38 @@ int timer_timeout_init() #ifdef RT_USING_TC static void _tc_cleanup() { - /* �����������������������л��������̣߳�����Ӧ�ж� */ + /* 调度器上锁,上锁后,将不再切换到其他线程,仅响应中断 */ rt_enter_critical(); - /* ɾ���߳� */ + /* 删除线程 */ if (tid != RT_NULL && tid->stat != RT_THREAD_CLOSE) rt_thread_delete(tid); - /* ִ����Ϣ���ж������� */ + /* 执行消息队列对象脱离 */ rt_mq_detach(&mq); - /* ִ�ж�ʱ������ */ + /* 执行定时器脱离 */ rt_timer_detach(&timer); - /* ���������� */ + /* 调度器解锁 */ rt_exit_critical(); - /* ����TestCase״̬ */ + /* 设置TestCase状态 */ tc_done(TC_STAT_PASSED); } int _tc_timer_timeout() { - /* ����TestCase�����ص����� */ + /* 设置TestCase清理回调函数 */ tc_cleanup(_tc_cleanup); timer_timeout_init(); - /* ����TestCase���е��ʱ�� */ + /* 返回TestCase运行的最长时间 */ return 100; } -/* ����������finsh shell�� */ +/* 输出函数命令到finsh shell中 */ FINSH_FUNCTION_EXPORT(_tc_timer_timeout, a thread timer testcase); #else -/* �û�Ӧ����� */ +/* 用户应用入口 */ int rt_application_init() { timer_timeout_init(); |
