Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不穿格子衫的农民
TencentOS Tiny
提交
fe1b6659
T
TencentOS Tiny
项目概览
不穿格子衫的农民
/
TencentOS Tiny
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TencentOS Tiny
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fe1b6659
编写于
7月 25, 2020
作者:
M
mculover666
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
finish the CMSIS_RTOS_API_Use_Guide document
上级
c16a12d3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
81 addition
and
0 deletion
+81
-0
doc/23.CMSIS_RTOS_API_Use_Guide.md
doc/23.CMSIS_RTOS_API_Use_Guide.md
+81
-0
未找到文件。
doc/23.CMSIS_RTOS_API_Use_Guide.md
浏览文件 @
fe1b6659
...
...
@@ -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
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录