内存动态分配管理
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); } }
相关文章推荐
- 自制力差的元凶及习惯的养成过程
- 栈帧、局部变量表、操作数栈
- Annotation总结
- iOS App设置icon,启动图,App名称的方法
- C语言查看和设置UDP通信中buffer的默认大小
- centos7最小安装后网络配置
- 全局唯一ID生成方案对比
- VA 破解版
- iOS百度云推送问题
- Python 列表(List)
- android手把手教你开发launcher(四)
- 企业如何实施核心人才战略
- spring--百度百科
- Unity3D学习笔记(九)模型导入
- Oracle查询session连接数和inactive
- Unity3D学习笔记(八)动画
- [置顶] Android 实现模拟按键
- kafka0.9新特性
- Git 常用命令大全
- __block 与 __weak的区别理解