STM32 FreeRTOS不断的删除任务创建任务测试

本文介绍了一种在STM32上使用FreeRTOS进行任务删除和创建的方法,通过设置任务句柄为NULL来判断任务是否已删除。在删除任务后,程序会根据句柄是否为空来决定是否重新创建任务。
摘要由CSDN通过智能技术生成

测试出删除后,状态回是删除标志

但是,定义了句柄没有创建任务时,状态是就绪,那就无法判断是不是创建了改任务。

最终还是使用正点原子方法将句柄等于NULL来判断。

/**********************************************
*函数名:myTaskDelete
*功能:删除一个任务                                                 
*参数:xTaskToDelete 要删除任务的句柄,不能填NULL
*返回:无
*作者:悟爱电子
*时间:2019.7.24
*说明:删除任务
***********************************************/
void myTaskDelete(TaskHandle_t *xTaskToDelete)
{
    if(*xTaskToDelete != NULL)        //判断任务是否存在
    {
        taskENTER_CRITICAL();                //进入临界区
        
        TaskHandle_t TempHandle = *xTaskToDelete;        //将句柄复制到局部变量
        (*xTaskToDelete) = NULL;                                        //将句柄设为NULL,即为任务不存在
        vTaskDelete(TempHandle);                                        //删除任务
        taskEXIT_CRITICAL();                //推出临界区
    }
}

 

#include "my_task.h"
#include "FreeRTOS.h"
#include "task.h"
#include "delay.h"
#include "usart.h"
#include "stdio.h"
#include "string.h"
#include "my_lib.h"

void task_start(void *pvParameters);                            //任务函数声明
TaskHandle_t TaskStart_Handle;        

void debug_fun(void *pvParameters);                            //任务函数声明
TaskHandle_t DebugFun_Handle;                                        //任务句柄

voi

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值