zoukankan      html  css  js  c++  java
  • UCOS内存管理

    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;
    }
  • 相关阅读:
    URL传递中文:Server.UrlEncode与Server.UrlDecode
    面向对象的封装性和多态性
    C#虚基类继承与接口的区别
    C# String与string的区别
    C# 索引器的使用
    ASP.NET 页面之间传递值的几种方式
    SQL Server中的游标CURSOR
    OpenLayers中的图层(转载)
    OpenLayers介绍和第一个例子(转载)
    SQL笔记-第七章,表连接
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709503.html
Copyright © 2011-2022 走看看