|
UCOSII推箱子游戲源程序- #include "includes.h"
- #define TASK_STK_SIZE 512 /* Size of each task's stacks (# of WORDs) */
- #define TaskStart_Prio 1
- #define Task1_Prio 2
- OS_STK TaskStk[OS_MAX_TASKS][TASK_STK_SIZE]; // Tasks stacks
- HANDLE mainhandle; //主線程句柄
- CONTEXT Context; //主線程切換上下文
- BOOLEAN FlagEn = 1; //增加一個全局變量,做為是否時鐘調(diào)度的標志
- void TaskStart(void * pParam) ;
- void VCInit(void); //初始化相關(guān)變量
- int main(int argc, char **argv)
- {
- VCInit();
- OSInit();
- OSTaskCreate(TaskStart, 0, &TaskStk[1][TASK_STK_SIZE-1], TaskStart_Prio);
- OSTaskCreate(drawMap, 0, &TaskStk[6][TASK_STK_SIZE-1], 6);
- OSTaskCreate(pushBox, 0, &TaskStk[5][TASK_STK_SIZE-1], 5);
- OSTaskCreate(ScanKey, 0, &TaskStk[7][TASK_STK_SIZE-1], 7);
- OSTaskCreate(winner, 0, &TaskStk[4][TASK_STK_SIZE-1], 4);
- OSStart();
- return(0);
- }
- void VCInit(void)
- {
- HANDLE cp,ct;
- Context.ContextFlags = CONTEXT_CONTROL;
- cp = GetCurrentProcess(); //得到當前進程句柄
- ct = GetCurrentThread(); //得到當前線程偽句柄
- DuplicateHandle(cp, ct, cp, &mainhandle, 0, TRUE, 2); //偽句柄轉(zhuǎn)換,得到線程真句柄
-
- }
- void TaskStart(void * pParam)
- {
- char err;
- OS_EVENT *sem1;
-
- /*模擬設置定時器中斷。開啟一個定時器線程,每秒中斷100次,中斷服務程序OSTickISRuser*/
- timeSetEvent(1000/OS_TICKS_PER_SEC, 0, OSTickISRuser, 0, TIME_PERIODIC);
- OSStatInit(); /*統(tǒng)計任務初始化*/
- sem1 = OSSemCreate(0);
- OSSemPend(sem1, 0, &err); //等待事件發(fā)生,被阻塞;
- }
復制代碼
|
-
-
推箱子.7z
2020-9-12 14:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.59 MB, 下載次數(shù): 46, 下載積分: 黑幣 -5
評分
-
查看全部評分
|