UCOS内存管理

来源:互联网 发布:北京网络报警平台官网 编辑:程序博客网 时间:2024/05/04 21:09

STM32F10xxx内置64K字节的静态SRAM。它可以以字节、半字(16位)或全字(32位)访问
SRAM的起始地址是0x20000000

UCOSII

//定义存储区OS_MEM *DATA_MEM;   //存储区中存储块数量(可申请次数)#define DATA_MEM_NUM        10//每个存储块大小#define DATA_MEMBLOCK_SIZE  128//内存地址__align(4) CPU_INT08U data_RamMemp[DATA_MEM_NUM][DATA_MEMBLOCK_SIZE] __attribute__((at(0x20001000)));/*OS_MEM  *OSMemCreate (void   *addr,                      INT32U  nblks,                      INT32U  blksize,                      INT8U  *perr);申请:void  *OSMemGet (OS_MEM  *pmem,                 INT8U   *perr);释放:INT8U  OSMemPut (OS_MEM  *pmem,                 void    *pblk);*/int main(){    INT8U err;    DATA_MEM = OSMemCreate(data_RamMemp,                DATA_MEM_NUM,                DATA_MEMBLOCK_SIZE,                &err);    void *data = OSMemGet(DATA_MEM, &err);    if(data)    {        OSMemPut(DATA_MEM, data);    }    return 0;}

UCOSIII

OS_MEM DATA_MEM;    #define DATA_MEM_NUM        5#define DATA_MEMBLOCK_SIZE  64__align(4) CPU_INT08U data_RamMemp[DATA_MEM_NUM][DATA_MEMBLOCK_SIZE] __attribute__((at(0x20002000)));/*void  OSMemCreate (OS_MEM       *p_mem,                   CPU_CHAR     *p_name,                   void         *p_addr,                   OS_MEM_QTY    n_blks,                   OS_MEM_SIZE   blk_size,                   OS_ERR       *p_err);void  *OSMemGet (OS_MEM  *p_mem,                 OS_ERR  *p_err);void  OSMemPut (OS_MEM  *p_mem,                void    *p_blk,                OS_ERR  *p_err);*/int main(){    OS_ERR err;    OSMemCreate(&DATA_MEM,                "data mem"                data_RamMemp,                DATA_MEM_NUM,                DATA_MEMBLOCK_SIZE,                &err);    void *data = OSMemGet(&DATA_MEM, &err);    if(data)    {        OSMemPut(&DATA_MEM, data, &err);    }    return 0;}
原创粉丝点击