📄 test.c.bak
字号:
#include "includes.h"
#define TASK_STK_SIZE 512 //任务堆栈长度
OS_STK StartTaskStk[TASK_STK_SIZE]; //定义任务堆栈区
OS_STK MyTaskStk[TASK_STK_SIZE];
OS_MEM *IntBuffer; /*内存控制块指针*/
INT8U IntPart[4][6]; /*空间数组*//*四块,每块6个字节*/
INT32U *IntBlkPtr[4]; /*存储获取内存块的指针-32位为了能显示原来存在的链表指针数据*/
INT16S key; //用于退出uCOS_II的键
INT8U err;
INT8U x=0,y=0; //字符显示位置
void StartTask(void *data);
void MyTask(void *data);
void Quitkey(void);
/************************主函数*********************************************/
void main (void)
{
OSInit(); //初始化uCOS_II
PC_DOSSaveReturn(); //保存Dos环境
PC_VectSet(uCOS, OSCtxSw); //安装uCOS_II中断
IntBuffer=OSMemCreate(IntPart,4,6,&err);
if(err!=OS_NO_ERR)
{PC_DispStr(20,20,"Mem create error",DISP_BGND_BLACK+DISP_FGND_WHITE);}/*检测是否创建成功*/
OSTaskCreate(StartTask,0,&StartTaskStk[TASK_STK_SIZE - 1],5);
OSStart();
}
//*****************************StartTask********************************************
void StartTask(void *pdata)
{
pdata=pdata;
OS_ENTER_CRITICAL();
PC_VectSet(0x08, OSTickISR);
PC_SetTickRate(OS_TICKS_PER_SEC);
OS_EXIT_CRITICAL();
// OSStatInit();
OSTaskCreate(MyTask,0,&MyTaskStk[TASK_STK_SIZE - 1],6);
OSTaskSuspend(OS_PRIO_SELF);
}
//*****************************MyTask********************************************
void MyTask (void *pdata)
{
char temp[20];
pdata = pdata;
for (;;)
{
/*Do some display init*/
PC_DispStr(2,8,"Get Order",DISP_BGND_BLACK+DISP_FGND_WHITE);
PC_DispStr(5,9,"0123:",DISP_BGND_BLACK+DISP_FGND_WHITE);
PC_DispStr(34,8,"Put Order",DISP_BGND_BLACK+DISP_FGND_WHITE);
PC_DispStr(34,9,"0123:",DISP_BGND_BLACK+DISP_FGND_WHITE);
PC_DispStr(34,10,"3210:",DISP_BGND_BLACK+DISP_FGND_WHITE);
PC_DispStr(34,11,"0312:",DISP_BGND_BLACK+DISP_FGND_WHITE);
/*第一次获取内存块然后放回*/
for(x=0;x<4;x++)
{
IntBlkPtr[x]=(INT32U *)OSMemGet(IntBuffer,&err);
sprintf(temp,"%d",*IntBlkPtr[x]);
PC_DispStr(11+x*6,9,temp,DISP_BGND_BLACK+DISP_FGND_YELLOW);
}
for(x=0;x<4;x++)
{
OSMemPut(IntBuffer,IntBlkPtr[3-x]);
}
/*第二次获取内存块然后逆序放回*/
for(x=0;x<4;x++)
{
IntBlkPtr[x]=(INT32U *)OSMemGet(IntBuffer,&err); /*强制转换为32位数据指针为了能显示原来存在的链表指针数据*/
sprintf(temp,"%d",*IntBlkPtr[x]);
PC_DispStr(11+x*6,10,temp,DISP_BGND_BLACK+DISP_FGND_YELLOW);
}
for(x=0;x<4;x++)
{
OSMemPut(IntBuffer,IntBlkPtr[x]);
}
/*第三次获取内存块然后乱序放回0312*/
for(x=0;x<4;x++)
{
IntBlkPtr[x]=(INT32U *)OSMemGet(IntBuffer,&err);
sprintf(temp,"%d",*IntBlkPtr[x]);
PC_DispStr(11+x*6,11,temp,DISP_BGND_BLACK+DISP_FGND_YELLOW);
}
OSMemPut(IntBuffer,IntBlkPtr[0]);
OSMemPut(IntBuffer,IntBlkPtr[3]);
OSMemPut(IntBuffer,IntBlkPtr[1]);
OSMemPut(IntBuffer,IntBlkPtr[2]);
/*第四次获取内存块*/
for(x=0;x<4;x++)
{
IntBlkPtr[x]=(INT32U *)OSMemGet(IntBuffer,&err);
sprintf(temp,"%d",*IntBlkPtr[x]);
PC_DispStr(11+x*6,12,temp,DISP_BGND_BLACK+DISP_FGND_YELLOW);
}
Quitkey();
OSTimeDlyHMSM(0,1,0,0);
}
}
//*****************************Quitkey()********************************************
void Quitkey(void)
{
if(PC_GetKey(&key)==TRUE)
{
if(key==0x1B)
{PC_DOSReturn();}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -