- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ucos-ii学习笔记——动态内存分配原理及使用.doc
ucos-ii学习笔记——动态内存分配原理及使用
All Rights Reserved
/*设计一个含有一个任务的应用程序,该任务负责打印两个起始显示位置不同的相同字符串,
要求在任务中申请一个内存块,并把存放字符串显示起始位置的数据变量存放在该内存块中。
*/
#include INCLUDES.h
#define TASK_STK_SIZE 512 /* 任务堆栈长度*/
OS_STK StartTaskStk[TASK_STK_SIZE]; /*定义任务堆栈区 */
OS_STK MyTaskStk[TASK_STK_SIZE];
OS_MEM *IntBuffer; //定义内存控制块指针,也即是指向内存分区的指针,创建一个
//内存分区时,返回值就是它 OS_MEM 内存控制块类型的指针
INT8U IntPart[50][64]; //划分一个具有50个内存块,每个内存块长度是64个字节的内存分区
INT8U *IntBlkPtr; //定义内存块指针 无符号char型的
char *s1= Mytask is running;
//char *s2= Youtask is running;
//char *s3= Hertask is running;
INT8U err; //存放错误信息
INT8U y=0; //字符显示位置
void StartTask(void *data); /* 声明起始任务 */
void MyTask(void *data); /* 声明任务 */
/*
*********************************************************************************************************
* MAIN主函数
*********************************************************************************************************
*/
void main (void)
{
OSInit(); /* 初始化uC/OS-II */
PC_DOSSaveReturn(); /* 保存DOS环境 */
PC_VectSet(uCOS, OSCtxSw); /* 安装uC/OS-II的中断 */
IntBuffer=OSMemCreate(IntPart,50,64,err); //创建动态内存区 函数参数为:IntPart为内存分区的起始地址
//前面已经定义了INT8U IntPart[50][64];表示内存分区,用数组名表示起始地址
//第二个参数50表示分区中内存块的数目,第三个参数64表示每个内存块的字节数,最后err为错误信息
//上面也定义了INT8U err; //存放错误信息
//函数的返回值为创建的内存分区的指针,为OS_MEM 内存控制块类型的指针,上面定义了
//OS_MEM *IntBuffer; //定义内存控制块指针
OSTaskCreate(StartTask, (void *)0, StartTaskStk[TASK_STK_SIZE - 1], 0); //创建起始任务
OSStart(); /* 启动多任务管理 */
}
/*
*********************************************************************************************************
* STARTUP TASK
*****************************************
文档评论(0)