FreeRTOS学习笔记——任务删除 vTaskDelete() API

任务可以使用API函数 vTaskDelete() 删除自己或其他任务。

空闲任务的责任是要将分配给已删除任务的内存释放掉。注意:只有内核为任务分配的内存空间才会在任务被删除后自动回收,任务自己占用的内存或资源需要由应用程序自己显式地释放。

         void vTaskDelete( xTaskHandle pxTaskToDelete );

其中pxTaskToDelete 被删除任务的句柄(目标任务) 。可参照创建任务时使用 FreeRTOS 的API 函数xTaskCreate(),

portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode,
const signed portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pxCreatedTask ); 

 其中pxCreatedTask    用于传出任务的句柄。这个句柄将在API 调用中对该创建出来的任务进行引用,比如改变任 务优先级,或者删除任务。如果应用程序中不会用到这个任务的句柄,则pxCreatedTask 可以被设为NULL。

任务可以通过传入NULL值来删除自己。

例程如下:

/* main() 函数实现 */

int main( void )
{
/* 任务1创建在优先级1上 */

xTaskCreate( vTask1, "Task 1", 1000, NULL, 1, NULL );

/* 任务1以优先级 1创建 */

/* 开启任务调度器,执行任务1 */
vTaskStartScheduler();

/* main() should never reach here as the scheduler has been started. */
for( ;; );
}


/*任务1 代码*/

void vTask1( void *pvParameters )
{
const portTickType xDelay100ms = 100 / portTICK_RATE_MS; /*当前的每个tick的MS值为100*/
for( ;; )
{

/* Print out the name of this task. */

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值