硬汉嵌入式论坛

 找回密码
 立即注册
查看: 955|回复: 4
收起左侧

[FreeRTOS] 求助,FreeRTOS的vTaskSuspend失效

[复制链接]

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-12-1 17:34:32 | 显示全部楼层 |阅读模式
本帖最后由 123积分 于 2024-12-1 17:38 编辑

创建任务如下:
屏幕截图 2024-12-01 172236.png

在Colck_Task里面挂起Menu_Task:
屏幕截图 2024-12-01 172524.png
出现的问题:
Colck_Task在vTaskSuspend(Menu_Task_Handle);这行代码之后的内容不再执行
而Menu_Task也没有被立刻挂起,还是会执行几个时间片才会被停止(没有进入while(1)中)
屏幕截图 2024-12-01 172821.png
求助大伙

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-2 00:36:17 | 显示全部楼层
任务句柄是不是不对

TaskHandle_t xHandle;

         // Create a task, storing the handle.
         xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );

         // ...

         // Use the handle to suspend the created task.
         vTaskSuspend( xHandle );
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2024-12-2 17:28:55 | 显示全部楼层
eric2013 发表于 2024-12-2 00:36
任务句柄是不是不对

TaskHandle_t xHandle;

确实是这个问题,谢谢硬汉哥;另外在排查的过程中又发现了几个问题:一开始错误的传入句柄(而非句柄地址)但是任务却仍然能正常创建并运行,而且能正常接收信号量,这一点有点奇怪;另一个就是,上面提到的Clock_Task只执行了几个时间片,以及Menu_Task在vTaskSuspend后面的代码不再执行,在调试状态下发现程序是卡在另一个任务(Key_Task)的一个死循环里面,但是调度器并没有切换执行其他优先级更高的任务(比如Clock_Task),而是一直卡在死循环里面
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-3 11:26:23 | 显示全部楼层
123积分 发表于 2024-12-2 17:28
确实是这个问题,谢谢硬汉哥;另外在排查的过程中又发现了几个问题:一开始错误的传入句柄(而非句柄地址 ...

1、句柄问题,仅研究他正常配置后的情况就行。
2、这个得排查下你的任务程序代码实现了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 00:39 , Processed in 0.246888 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表