硬汉嵌入式论坛

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

[FreeRTOS] 求助,FreeRTOS中,怎么重新启动一个任务?

[复制链接]

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2023-3-27 11:24:54 | 显示全部楼层 |阅读模式
注意,不是suspend和resume。

从英文单词上理解,suspend和resume是指,任务执行到50%后,suspend可以停止,调用resume后,任务继续从50%处执行。

我需要的是,完全停止一个任务,再次启动时,这个任务函数从开头执行。。。保护任务函数内定义的变量初始化。 该怎么操作呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106614
QQ
发表于 2023-3-27 11:33:21 | 显示全部楼层
这个专业词汇叫任务reset,这个ThreadX支持,FreeRTOS好像还没有增加这种方式。

ThreadX带了复位任务函数tx_thread_reset,可以让任务重新从头开始执行
https://www.armbbs.cn/forum.php? ... 6245&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
 楼主| 发表于 2023-3-27 11:43:35 | 显示全部楼层
eric2013 发表于 2023-3-27 11:33
这个专业词汇叫任务reset,这个ThreadX支持,FreeRTOS好像还没有增加这种方式。

ThreadX带了复位任务函 ...

单个任务的reset应该是个很常见的需求,猜想FreeRTOS的作者应该考虑到了处理方法,就没有额外增加api函数了。

目前,我只能想到使用动态创建任务,删除任务来对应,但是又很担心代码处理不好,重复创建了会造成崩溃。。。
回复

使用道具 举报

3

主题

75

回帖

84

积分

初级会员

积分
84
发表于 2023-3-27 15:16:30 | 显示全部楼层
注意一下,freertos 删除任务 会在idle任务中完成删除动作
回复

使用道具 举报

3

主题

75

回帖

84

积分

初级会员

积分
84
发表于 2023-3-27 15:38:58 | 显示全部楼层
gjeoi 发表于 2023-3-27 15:16
注意一下,freertos 删除任务 会在idle任务中完成删除动作

附上官方描述,链接:https://www.freertos.org/a00126.html
Snipaste_2023-03-27_15-36-57.png

回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
发表于 2023-3-28 13:39:00 | 显示全部楼层
我也有这个设计需求,目前也还没有想到哪种比较好的方案
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
 楼主| 发表于 2023-3-28 14:19:25 | 显示全部楼层
本帖最后由 caicaptain2 于 2023-3-28 14:21 编辑
ou513 发表于 2023-3-28 13:39
我也有这个设计需求,目前也还没有想到哪种比较好的方案

我也在百度和FreeRTOS官网的论坛上看了一下,没有可靠的好的办法。
有个折中的办法,需要重启的任务等待通知,接收到通知,然后强制跳转(goto)到任务函数的开头部分。
回复

使用道具 举报

23

主题

1403

回帖

1472

积分

至尊会员

积分
1472
发表于 2023-3-28 14:28:59 | 显示全部楼层
caicaptain2 发表于 2023-3-27 11:43
单个任务的reset应该是个很常见的需求,猜想FreeRTOS的作者应该考虑到了处理方法,就没有额外增加api函数 ...

不用给他们留面子,FreeRTOS源码本身就没有什么亮点。
代码不规范,亲人两行泪!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:25 , Processed in 0.195531 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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