文件名称:任务内建消息队列实验-倒数粗糙熵图像阈值化分割算法
文件大小:6.12MB
文件格式:PDF
更新时间:2024-06-29 05:03:02
UCOSIII 教程
11.5 任务内建消息队列实验 11.5.1 实验程序设计 例 11-2:设计一个应用程序,该程序有 3 任务和一个定时器。任务 start_task 用于创建其他 2 个 任务。main_task 任务为主任务,用于检测按键,当检测到按键 KWY_UP 被按下的时候就开启 或关闭定时器 1, main_task 任务还用于检测 msgdis_task 任务的内建消息队列的总大小和剩余 空间大小,并且控制 LED0 的闪烁。 定时器 1 的回调函数 tmr1_callback 通过任务 msgdis_task 内建的消息队列将定时器 1 的运 行次数作为信息发送给任务 msgdis_task,任务 msgdis_task 将自带的队列中的消息显示在 LCD 上。 答:实验关键代码如下,实验完整工程见“例 11-2 UCOSIII 任务内建消息队列”。 既然要使用任务 msgdis_task 的内建消息队列,那么在创建任务 msgdis_task 的时候就需要 指定内建消息队列的大小,大小通过一个宏来设定: #define TASK_Q_NUM 4 //任务内建消息队列的长度 由于 msgdis_task 任务是在 start_task 任务中创建的,所以我们来看一下 start_task 的任务函 数,如下: //开始任务函数 void start_task(void *p_arg) { OS_ERR err; CPU_SR_ALLOC(); p_arg = p_arg; CPU_Init(); #if OS_CFG_STAT_TASK_EN > 0u OSStatTaskCPUUsageInit(&err); //统计任务 #endif