UCOSIII实验:任务内建消息队列与倒数粗糙熵图像阈值化
需积分: 12 98 浏览量
更新于2024-08-09
收藏 6.12MB PDF 举报
"任务内建消息队列实验-倒数粗糙熵图像阈值化分割算法"
在UCOSIII操作系统中,任务内建消息队列是一种高效的数据通信机制,它允许任务之间通过消息进行通信,实现数据交换。在这个实验中,我们看到了如何设计一个使用内建消息队列的应用程序。实验主要涉及了以下几个知识点:
1. **任务创建**:实验中有三个任务,start_task、main_task 和 msgdis_task。start_task 是启动任务,负责创建其他两个任务。在创建 msgdis_task 时,需要指定内建消息队列的长度,这通过宏定义 TASK_Q_NUM(这里是4)来设定。
2. **内建消息队列**:msgdis_task 任务拥有一个内建的消息队列,用于接收和处理来自其他任务或定时器的消息。这种队列是任务创建时的一部分,节省了系统资源,提高了效率。
3. **定时器**:实验中使用了一个定时器 1,其回调函数 tmr1_callback。当定时器超时,它会向 msgdis_task 的内建消息队列发送定时器运行次数的信息。
4. **消息传递**:定时器回调函数通过任务内建的消息队列将信息发送到 msgdis_task,而不是直接调用任务函数,这样避免了任务间的直接交互,遵循了操作系统对任务间通信的规则。
5. **主任务**:main_task 是主任务,负责检测按键输入和控制 LED0 的闪烁。当检测到按键 KWD_UP 被按下时,main_task 开启或关闭定时器 1,并监控 msgdis_task 的消息队列状态。
6. **UCOSIII API**:实验中会用到UCOSIII提供的API函数来创建任务、启动定时器、发送和接收消息等。例如,创建任务可能使用 OS_TaskCreate() 函数,启动定时器可能使用 OSTmrStart() 或 OSTmrStop(),而发送消息可能使用 OSQPost(),接收消息则使用 OSQReceive()。
7. **系统初始化**:在开始任务 start_task 中,执行了 CPU_Init() 来初始化CPU,并且如果 OS_CFG_STAT_TASK_EN 设置为大于0,还会初始化统计任务以监控CPU的使用情况。
这个实验提供了一个实际应用UCOSIII内建消息队列的示例,帮助开发者理解如何在多任务环境中有效地使用消息队列进行数据通信。同时,通过STM32F103系列开发板的实践,加深了对UCOSIII操作系统理解和嵌入式开发的技能。
2021-07-20 上传
2019-07-06 上传
2013-01-24 上传
2019-07-22 上传
2021-01-20 上传
621 浏览量
2021-05-30 上传
点击了解资源详情
Davider_Wu
- 粉丝: 45
- 资源: 3889
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍