我们先看我们的任务代码 TEST.C

 1 /******************************Test*******************************/
 2 #include "includes.h"
 3 #define  TASK_STK_SIZE   512            //任务堆栈长度
 4 
 5 OS_STK   MyTaskStk[TASK_STK_SIZE];        //定义任务堆栈区
 6 OS_STK   YouTaskStk[TASK_STK_SIZE];        //定义任务堆栈区
 7 INT16S   key;                    //用于退出uCOS_II的键
 8 INT8U     x=0,y=0;                //字符显示位置
 9 void  MyTask(void *data);            //声明任务
10 void  YouTask(void *data);
11 char* s_M="M";                        
12 /************************主函数*********************************/
13 void  main (void)
14 {
15                         //定义要显示的字符
16     OSInit( );                    //初始化uCOS_II
17     PC_DOSSaveReturn( );            //保存Dos环境
18     PC_VectSet(uCOS, OSCtxSw);            //安装uCOS_II中断
19     OSTaskCreate(
20         MyTask,                //创建任务MyTask
21         s_M,                //给任务传递参数
22         &MyTaskStk[TASK_STK_SIZE - 1],    //设置任务堆栈栈顶指针
23         4                //任务的优先级别为0
24         );                
25     OSStart( );                    //启动多任务管理
26 }
27 
28 /*******************任务MyTask**********************************/
29 
30 void  MyTask (void *pdata)
31 {
32 
33 
34     char* s_Y="Y";                //定义要显示的字符
35 #if OS_CRITICAL_METHOD == 3
36     OS_CPU_SR  cpu_sr;
37 #endif
38     pdata = pdata; 
39     OS_ENTER_CRITICAL( );
40     PC_VectSet(0x08, OSTickISR);        //安装时钟中断向量
41     PC_SetTickRate(OS_TICKS_PER_SEC);        //设置时钟频率
42     OS_EXIT_CRITICAL( );
43     OSStatInit( );                //初始化统计任务
44     OSTaskCreate(
45         YouTask,            //创建任务MyTask
46         s_Y,                //给任务传递参数
47         &YouTaskStk[TASK_STK_SIZE - 1],    //设置任务堆栈栈顶指针
48         5                // MyTask的优先级别为2
49         );                
50     for (;;) 
51     {
52         if (x>50) 
53         {
54            x=0;
55            y+=2; 
56             }                                                 
57         PC_DispChar(x, y,            //字符的显示位置
58         *(char*)pdata, 
59         DISP_BGND_BLACK+DISP_FGND_WHITE );
60                x += 1;   
61         //如果按下Esc键则退出uCOS_II
62         if (PC_GetKey(&key) == TRUE) 
63         {
64             if (key == 0x1B) 
65             {
66                 debug31();
67                 PC_DOSReturn( );        //恢复Dos环境
68             }
69         }
70         OSTimeDlyHMSM(0, 0, 3, 0);        //等待3秒
71 }
72 }
73 
74 /************************任务YouTask******************************/
75 
76 void  YouTask (void *pdata)
77 {
78 #if OS_CRITICAL_METHOD == 3
79     OS_CPU_SR  cpu_sr;
80 #endif
81     pdata = pdata; 
82     for (;;) 
83     { 
84         if (x>50) 
85         {
86            x=0;
87            y+=2; 
88         }                                                 
89         PC_DispChar(
90             x, y,            //字符的显示位置
91             *(char*)pdata, 
92             DISP_BGND_BLACK+DISP_FGND_WHITE 
93             );
94                x += 1;    
95         OSTimeDlyHMSM(0, 0, 1, 0);        //等待1秒
96     }
97 }
98 
99 /************************End************************************/
TEST.C

相关文章:

  • 2022-01-26
  • 2022-12-23
  • 2022-12-23
  • 2021-04-08
  • 2021-06-29
  • 2022-12-23
  • 2021-06-20
  • 2021-12-03
猜你喜欢
  • 2021-06-07
  • 2021-06-04
  • 2021-08-14
  • 2021-06-15
  • 2021-08-05
  • 2021-11-09
  • 2021-09-29
相关资源
相似解决方案