删除任务使用的函数:

void vTaskDelete( TaskHandle_t xTaskToDelete );

把函数句柄传进去,xTaskCreate创建任务时候会得到一个句柄。

例如下面代码中的:vTaskDelete(xSoundTaskHandle);//其中xSoundTaskHandle是句柄

    while (1)
    {
		/* 读取红外遥控器 */
		if(IRReceiver_Read(&dev,&data)==0)
		{
			
			if(data == 0xa8)/* play */
			{
				/* 创建播放音乐的任务 */
				extern void PlayMusic(void *params);
				if(xSoundTaskHandle == NULL)
				{
					LCD_ClearLine(0,0);
					LCD_PrintString(0,0,"create task");
					ret = xTaskCreate(PlayMusic,"SoundTask",128,NULL,osPriorityNormal,&xSoundTaskHandle);
				}
			}
			else if(data == 0xa2)/* power */
			{
				/* 删除播放音乐的任务 */
				if(xSoundTaskHandle != NULL)
				{
					LCD_ClearLine(0,0);
					LCD_PrintString(0,0,"delete task");
					vTaskDelete(xSoundTaskHandle);
					PassiveBuzzer_Control(0);
					xSoundTaskHandle = NULL;
				}
				
			}
			
		}
		
    }

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐