finish the CMSIS_RTOS_API_Use_Guide document
This commit is contained in:
@@ -731,7 +731,88 @@ task1 finish do sth!
|
||||
task2 get mutex,doing sth...
|
||||
```
|
||||
## 3.5. 动态内存使用示例
|
||||
```c
|
||||
#include <cmsis_os.h>
|
||||
|
||||
typedef struct blk_st {
|
||||
int id;
|
||||
char* payload;
|
||||
} blk_t;
|
||||
|
||||
#define MMBLK_BLK_NUM 10
|
||||
|
||||
osPoolDef (MemPool, MMBLK_BLK_NUM, blk_t);
|
||||
osPoolId mem_pool_id;
|
||||
|
||||
void task1_entry(void *arg)
|
||||
{
|
||||
|
||||
blk_t *ptr = NULL;
|
||||
osStatus err;
|
||||
|
||||
/* 打印出一个块的大小 */
|
||||
printf("block size is %d bytes\r\n", sizeof(blk_t));
|
||||
|
||||
/* 申请一个块 */
|
||||
ptr = osPoolAlloc(mem_pool_id);
|
||||
if (ptr == NULL) {
|
||||
printf("a mmblk alloc fail\r\n");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
printf("a mmblk alloc success\r\n");
|
||||
}
|
||||
|
||||
/* 使用该块 */
|
||||
ptr->id = 1;
|
||||
ptr->payload = "hello";
|
||||
printf("mmblk id:%d payload:%s\r\n", ptr->id, ptr->payload);
|
||||
|
||||
/* 使用完毕之后释放 */
|
||||
err = osPoolFree(mem_pool_id, ptr);
|
||||
if (err != osOK) {
|
||||
printf("a mmblk free fail, err = %d\r\n", err);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
printf("a mmblk free success\r\n");
|
||||
}
|
||||
|
||||
while (1) {
|
||||
tos_task_delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
#define STK_SIZE_TASK1 1024
|
||||
osThreadDef(task1_entry, osPriorityNormal, 1, STK_SIZE_TASK1);
|
||||
|
||||
void application_entry(void *arg)
|
||||
{
|
||||
//初始化静态内存池
|
||||
mem_pool_id = osPoolCreate(osPool(MemPool));
|
||||
if (mem_pool_id == NULL) {
|
||||
printf("mmblk pool create fail\r\n");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
printf("mmblk pool create success\r\n");
|
||||
}
|
||||
|
||||
//创建任务
|
||||
osThreadCreate(osThread(task1_entry), NULL);
|
||||
|
||||
return;
|
||||
}
|
||||
```
|
||||
运行结果为:
|
||||
```
|
||||
item size = 8 bytes, create ret = 0
|
||||
mmblk pool create success
|
||||
block size is 8 bytes
|
||||
a mmblk alloc success
|
||||
mmblk id:1 payload:hello
|
||||
a mmblk free success
|
||||
```
|
||||
|
||||
## 3.6. 消息队列使用示例
|
||||
```c
|
||||
|
Reference in New Issue
Block a user