标题:
UCOSII推箱子游戏程序设计
[打印本页]
作者:
单片机的终结者
时间:
2020-9-12 02:10
标题:
UCOSII推箱子游戏程序设计
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; //增加一个全局变量,做为是否时钟调度的标志
void TaskStart(void * pParam) ;
void VCInit(void); //初始化相关变量
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); //伪句柄转换,得到线程真句柄
}
void TaskStart(void * pParam)
{
char err;
OS_EVENT *sem1;
/*模拟设置定时器中断。开启一个定时器线程,每秒中断100次,中断服务程序OSTickISRuser*/
timeSetEvent(1000/OS_TICKS_PER_SEC, 0, OSTickISRuser, 0, TIME_PERIODIC);
OSStatInit(); /*统计任务初始化*/
sem1 = OSSemCreate(0);
OSSemPend(sem1, 0, &err); //等待事件发生,被阻塞;
}
复制代码
推箱子.7z
2020-9-12 14:38 上传
点击文件名下载附件
下载积分: 黑币 -5
1.59 MB, 下载次数: 46, 下载积分: 黑币 -5
作者:
shumivan
时间:
2021-4-27 17:58
下载下来,自己试着玩玩,听名字挺实用,给孩子做着玩
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1