UCOS内存管理
2024-08-21 18:36:45
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;
}
最新文章
- java并发编程学习笔记(一)初识并发原子性
- A - 迷宫问题
- iOS 适配https
- Linux文本比较-diff&;awk
- svn常见错误总结
- SQL Server 系统表简介
- 集合类学习之HashMap
- [CODEVS1116]四色问题
- Uva_11762 Race to 1
- python队列join
- System.Drawing.Image.Save(Savepath),保存为jpg格式,参数错误,文件0kb解决办法
- Carthage使用(cocoapods的替代)
- PixelFormat 图像颜色的数据格式
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释(转)
- .NET MongoDB Driver 2.2使用示例
- 定时任务schedule(spring boot )
- ZJOI 2014 星系调查(推导)
- java ee wildfly 批处理 job 工作
- POJ 3984(DFS入门题 +stack储存路径)
- Link Cut Tree学习笔记