[5-3] 删除任务_用遥控器控制音乐

[5-3] 删除任务_用遥控器控制音乐

在本节视频中,我们将继续深入任务管理的概念,讲解如何删除任务并使用遥控器控制音乐播放。通过本节课程,你将学习到如何通过遥控器控制音乐播放任务的创建与删除,并且掌握任务删除的实际操作。接下来,我将引导你完成这个过程,让你逐步理解如何在项目中应用这些概念。

1. 用遥控器控制任务

在这一部分,我们通过遥控器来控制音乐的播放。具体来说,按下遥控器的 play 键时,我们会创建一个播放音乐的任务;而按下电源键时,我们会删除这个任务,停止音乐的播放。通过这种方式,你就可以灵活地控制任务的开始和结束。

1.1 实验准备

首先,我们将程序加载到开发板上,并连接上无源蜂鸣器(请注意,无源蜂鸣器才能播放音乐)。接着,按下遥控器的 play 键,音乐开始播放;按下电源键,音乐停止播放。这个过程已经通过编译和烧写完成,只需要你进行控制即可。

1.2 删除任务的实现

为了删除任务,我们需要使用一个特殊的函数——wetaskdelete。但是,在删除任务之前,我们必须确保知道任务的句柄。你可以通过 create task 函数创建任务时获得句柄,并在删除任务时传递该句柄。

wetaskdelete(task_handle);

如果任务存在,系统会删除对应的任务链路。

2. 编写和修改代码

接下来,我们将在之前的代码基础上进行修改,确保任务能够根据遥控器的输入动态创建或删除。

2.1 任务句柄的管理

在代码中,我们需要创建一个全局变量 task_handle 来存储任务的句柄,确保我们能够删除任务。如果任务已创建,我们就可以通过判断句柄是否为 NULL 来决定是否删除任务。

task_handle = NULL;

每次按下 play 键时,检查 task_handle 是否为空。如果为空,说明任务未创建,则创建任务;如果不为空,说明任务已创建,则不再重复创建。

if (task_handle == NULL) {
    task_handle = create_task();
} else {
    task_handle = NULL;
}

2.2 屏幕提示和控制

为了让你能够清晰地看到任务的创建和删除状态,我们在屏幕上显示提示信息。例如,当任务正在播放时,屏幕上显示 “Playing Music”;当任务删除时,显示 “Task Deleted”。

LCDclear();
LCDprint("Task Deleted");

这种方式不仅让用户知道任务的当前状态,也提高了程序的交互性。

3. 改进任务删除

在实验过程中,我们发现删除任务后,蜂鸣器依然会发出相同的频率声音,这很不舒服。为了解决这个问题,我们需要在删除任务时同时停止蜂鸣器的播放。

3.1 停止蜂鸣器

为了停止蜂鸣器的声音,我们需要在删除任务后,调用停止蜂鸣器的函数:

stop_buzzer();

这样可以确保在任务删除后,蜂鸣器不再发出持续的声音。

3.2 清屏操作

另外,我们还需要在删除任务后清除屏幕上的信息,以避免信息混合在一起,导致显示不清晰。每次打印新信息时,都应先清除当前的屏幕内容。

LCDclear();

这样,屏幕始终保持清晰的显示,避免信息叠加。

4. 内存管理和任务清理

频繁地创建和删除任务可能会导致内存碎片化,这是一个需要注意的问题。在这个过程中,每次删除任务后,系统会释放相应的内存资源。如果频繁执行创建和删除操作,可能会导致内存分配失败。因此,任务的删除不仅仅是停止任务的执行,还应进行必要的清理工作。

4.1 内存管理

为了避免内存碎片问题,我们可以在任务结束时进行清理工作,而不仅仅是简单地删除任务。这通常意味着,在删除任务前,需要确保系统不会因为频繁的内存分配和释放而出现问题。

5. 总结

通过本节课程,我们学习了如何使用遥控器控制任务的创建与删除。你不仅学会了通过遥控器操作任务的生命周期,还了解了如何管理任务句柄、清屏以及停止蜂鸣器等操作。在实际应用中,任务管理和内存管理都是至关重要的,我们需要合理地安排任务的创建与删除,确保系统的稳定性和流畅性。

下次我们将继续优化音乐播放的效果,解决一些卡顿问题。希望通过不断改进,能让你的项目更加完善。


以上内容帮助你理解如何用遥控器控制任务的创建和删除,并且为你提供了一些优化和内存管理的建议。希望这篇博客能帮助你更好地回顾并巩固所学的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值