您的位置:首页 > 其它

内存动态分配管理

2016-04-28 10:30 218 查看
/**********************************************
*内存管理测试
**********************************************/
#include"includes.h"
#defineTASK_STK_SIZE512//任务堆栈长度

/******任务堆栈*********/
OS_STKTaskStartStk[TASK_STK_SIZE];//任务堆栈区
OS_STKStk_Task_1[TASK_STK_SIZE];//任务1堆栈区

/********全局变量*****************/
INT16Skey;//用于退出uCOS_II的键
INT8Uerr;//错误代码
OS_MEM*IntBuffer;//内存控制块指针
INT8UIntPart[20][128];//20块128字节
INT8U*IntBlkPtr;//块指针
OS_MEM_DATAMemInfor;//查询内存块信息

/*******任务声明************/
voidMyTask(void*pdata);
voidTask_1(void*pdata);//任务1

/************************主函数*********************************************/
voidmain(void)
{
OSInit();//初始化uCOS_II

IntBuffer=OSMemCreate(IntPart,20,128,&err);//创建动态内存分区

PC_DOSSaveReturn();//保存Dos环境
PC_VectSet(uCOS,OSCtxSw);//安装uCOS_II中断

OSTaskCreate(MyTask,0,&TaskStartStk[TASK_STK_SIZE-1],0);//使任务MyTask的优先级别为0
OSStart();//启动uCOS_II的多任务管理
}

voidMyTask(void*pdata)
{
#ifOS_CRITICAL_METHOD==3
OS_CPU_SRcpu_sr;
#endif

pdata=pdata;

OS_ENTER_CRITICAL();
PC_VectSet(0x08,OSTickISR);//安装uCOS_II时钟中断向量
PC_SetTickRate(OS_TICKS_PER_SEC);//设置uCOS_II时钟频率
OS_EXIT_CRITICAL();

OSStatInit();//初始化uCOS_II的统计任务

/********创建任务*************/
//任务1,优先级别2
OSTaskCreate(Task_1,(void*)0,&Stk_Task_1[TASK_STK_SIZE-1],2);

for(;;)
{
//如果按下Esc键则退出uCOS_II
if(PC_GetKey(&key)==TRUE)
{
if(key==0x1B)
{
PC_DOSReturn();
}
}

OSTimeDlyHMSM(0,0,1,0);//等待
}
}

//分配内存
voidTask_1(void*pdata)
{
#ifOS_CRITICAL_METHOD==3
OS_CPU_SRcpu_sr;
#endif

pdata=pdata;
while(1)
{
//申请内存
IntBlkPtr=OSMemGet(IntBuffer,&err);//发送内存请求
OSMemQuery(IntBuffer,&MemInfor);//内存控制块指针
//输出头指针
printf("MemInfor.OSFreeList:%x\n",MemInfor.OSFreeList);
printf("MemInfor.OSNUsed:%d\n",MemInfor.OSNUsed);
printf("MemInfor.OSNBlks:%d\n",MemInfor.OSNBlks);
printf("MemInfor.OSBlkSize:%d\n",MemInfor.OSBlkSize);
printf("----------------------------------------\n");
OSTimeDlyHMSM(0,0,1,0);
//释放内存
OSMemPut(IntBuffer,IntBlkPtr);//参数1:分区指针;参数2:内存块指针
OSTimeDlyHMSM(0,0,1,0);
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: