ARM---ucos常用系统函数参考手册(5)

发布时间:2021-06-06

好东西!

几种情况:
* OS_NO_ERR :成功建立内存区域。
* OS_MEM_INVALID_ADDR :非法地址,即地址为空指针。
* OS_MEM_INVALID_PART :没有空闲的内存区域。
* OS_MEM_INVALID_BLKS :没有为内存区域建立至少两个内存块。
* OS_MEM_INVALID_SIZE :内存块大小不足以容纳一个指针变量。
返回值:
OSMemCreate() 函数返回指向所创建的内存区域控制块的指针。如果创建失败,函数返回空指针。

2 OSMemGet()
该函数用于从内存区域分配一个内存块。用户程序必须知道所建立的内存块的大小,并必须在使用完内存块后释放它。可以多次调用 OSMemGet() 函数。它的返回值就是指向所分配内存块的指针,并作为 OSMemPut() 函数的参数。
函数原型:void *OSMemGet(OS_MEM *pmem, INT8U *err);
参数说明:pmem 是指向内存区域控制块的指针,可以从 OSMemCreate() 函数的返回值中得到。
err 是指向包含错误码的变量的指针。Err可能是如下情况:
* OS_NO_ERR :成功得到一个内存块。
* OS_MEM_NO_FREE_BLKS :内存区域中已经没有足够的内存块。
返回值:
OSMemGet() 函数返回指向所分配内存块的指针。如果没有可分配的内存块,OSMemGet() 函数返回空指针。3 OSMemPut()
该函数用于释放一个内存块,内存块必须释放回它原先所在的内存区域,否则会造成系统错误。
函数原型:INT8U OSMemPut (OS_MEM *pmem, void *pblk);
参数说明:pmem 是指向内存区域控制块的指针,可以从 OSMemCreate() 函数的返回值中得到。
pblk 是指向将被释放的内存块的指针。
返回值:
OSMemPut() 函数的返回值为下述之一:
* OS_NO_ERR :成功释放内存块
* OS_MEM_FULL :内存区域已满,不能再接受更多释放的内存块。这种情况说明用户程序出现了错误,释放了多于用 OSMemGet() 函数得到的内存块。

4 OSMemQuery()
该函数用于得到内存区域的信息。
函数原型:INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata);
参数说明:pmem 是指向内存区域控制块的指针,可以从 OSMemCreate() 函数的返回值中得到。
pdata 是一个指向 OS_MEM_DATA 数据结构的指针,该数据结构包含了以下的域:
void OSAddr; /* 指向内存区域起始地址的指针 */
void OSFreeList; /* 指向空闲内存块列表起始地址的指针 */
INT32U OSBlkSize; /* 每个内存块的大小 */
INT32U OSNBlks; /* 该内存区域中的内存块总数 */
INT32U
OSNFree; /* 空闲的内存块数目 */
INT32U OSNUsed; /* 已使用的内存块数目 */

消息队列
1 OSQCreate()
该函数用于建立一个消息队列。任务或中断可以通过消息队列向一个或多个任务发送消息。消

精彩图片

热门精选

大家正在看