- #if 1 /* 编译开关 */
-
- #include "CosyOS.H" // 用户的各个c文件中应包含此文件
- #include <stdio.h> // for printf
-
- /*-----------------------*
- | 创建任务 - 参数说明表 |
- |-----------------------+-----------------------------------------------------------*
- | 任务名称 | 任务优先级 | 任务栈大小 | 安全运行时 | 任务名称文本(兼容模式) |
- |----------+------------+------------+------------+---------------------------------|
- | task_1 | 1级 | 384字节 | 0为无限长 | 0为自动引用任务名称,即"task_1" |
- |----------+------------+------------+------------+---------------------------------|
- | task_2 | 2级 | 384字节 | 9滴答周期 | "task_led"为任务名称文本 |
- *-----------------------------------------------------------------------------------*/
-
- /*
- 注意事项 for 8051:
- 1、在默认情况下,任务栈SIZE不允许大于255。
- 2、只有在启用了XBPSTACK的任务切换现场保护时,任务栈SIZE才允许大于255,最大可为65535。
- */
-
- uExternTaskmsg(task_3, 1, 192, 0, "task_key", 1)(unsigned int);
- uExternTaskmsg(task_4, 1, 192, 0, "task_key1", 1)(unsigned int);
-
- /* 静态创建 task_1 */
- uCreateTask(task_1, 1, 192, 0, "Test_task1")
- {
- while(1){
- printf("task_1\r\n");
- uDelay_ms(1000);
- P20 =! P20;
- }
- }
-
- /* 动态创建 task_2 */
- uCreateTask(task_2, 2, 192, 0, 0)
- {
- while(1){
- printf("task_2\r\n");
- uDelay_ms(500);
- P21 =! P21;
- }
- }
-
-
- /* 静态创建私信任务 task_1 */// 1个私信参数
- uCreateTaskmsg(task_4, 1, 192, 0, "task_key1", 1)(unsigned int tm1)
- {
- while(1){ // 已内置循环,此循环可省略
- if(uRecvTaskmsg(xTick_ms(2000))){ // 接收私信,超时时间为2000毫秒,返回值为真表示接收成功
- printf("task_4: %u, %u\r\n", tm1++, (unsigned int)&tm1);
- uDelay_ms(1000);
- uSendTaskmsg(task_3)(tm1); // 发送私信至 task_3
- }
- }
- uEndTaskmsg(); // 结束私信任务
- }
-
-
- /* 静态创建私信任务 task_1 */// 1个私信参数
- uCreateTaskmsg(task_3, 1, 192, 0, "task_key", 1)(unsigned int tm1)
- {
- while(1){ // 已内置循环,此循环可省略
- if(uRecvTaskmsg(xTick_ms(2000))){ // 接收私信,超时时间为2000毫秒,返回值为真表示接收成功
- printf("task_3: %u, %u\r\n", tm1++, (unsigned int)&tm1);
- uDelay_ms(1000);
- uSendTaskmsg(task_4)(tm1); // 发送私信至 task_2
- }
- }
-
- uEndTaskmsg(); // 结束私信任务
- }
-
-
-
-
-
-
-
- /*
- * 启动钩子
- * 除了启动用户任务以外,启动钩子还适用于那些允许缓期执行的、
- * 需要开中断以后执行的、需要调用任务级服务执行的初始化工作。
- * 如果不想在启动任务过程中进行任务调度,可开启调度锁。
- */
- void start_hook(void)
- {
- // uScheduleLock();
-
- // uStartTask_Ready(task_1); // 启动 task_1,初始状态为就绪状态
- // uStartTask_Ready(task_2); // 启动 task_2,初始状态为就绪状态
-
- uSendTaskmsg(task_3)(1); // 发送私信至 task_1
-
- uStartTask_Ready(task_3); // 启动 task_1,初始状态为就绪状态
-
- uStartTask_Ready(task_4); // 启动 task_1,初始状态为就绪状态
-
- // uStartTaskmsg(TaskMsgTest, 123); // 私信任务启动
-
- // uScheduleUnlock();
- }
-
- #endif
复制代码
|