搜索
查看: 1705|回复: 2

[已解决] 新手求助,FreeRTOS里在中断中挂起任务出错

[复制链接]

该用户从未签到

1

主题

9

帖子

0

蝴蝶豆

新手上路

最后登录
2020-2-3
发表于 2020-1-29 10:12:18 | 显示全部楼层 |阅读模式
各位大佬,新手刚学习FreeRTOS,现在想在中断中挂起某个任务,我在教程里看到说有中断中的恢复函数xTaskResumeFromISR,但是没有在中断中的挂起函数,我搜了一下,有人说直接用vTaskSuspend就行,我在中断中就直接用了,结果确实不行,停在了下图中的位置,请问一下,vTaskSuspend确实不能在中断中用么?那如果我想在中断中挂起某个任务,应该怎么操作呢?多谢。。。。


QQ截图20200129100526.png
回复

使用道具 举报

该用户从未签到

14

主题

76

帖子

9

蝴蝶豆

金牌会员

最后登录
2023-12-5
发表于 2020-1-31 12:45:26 | 显示全部楼层
vTaskSuspendAll()
   将调度器锁定,可执行嵌套的挂起任务调度器。任务调度器挂起后不能进行上下文的切换,但是中断仍然使能,当调度器被挂起后,如果有中断需要进行上下文切换,那么中断将会被挂起,在调度器恢复后才响应这个中断。调度器恢复可以调用 xTaskResumeAll()函数,调用了多少次的 vTaskSuspendAll()就要调用多少次xTaskResumeAll()进行恢复
void vTaskSuspendAll( void )
{
    ++uxSchedulerSuspended;
}  

uxSchedulerSuspended 用于记录调度器是否被挂起,该变量默认初始值为 pdFALSE,表明调度器是没被挂起的,每调用一次vTaskSuspendAll()函数就将变量加一,用于记录调用了多少次 vTaskSuspendAll()函数  

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

9

帖子

0

蝴蝶豆

新手上路

最后登录
2020-2-3
 楼主| 发表于 2020-2-3 09:44:01 | 显示全部楼层
hejun96 发表于 2020-1-31 12:45
vTaskSuspendAll()
   将调度器锁定,可执行嵌套的挂起任务调度器。任务调度器挂起后不能进行上下文的切换 ...

非常感谢。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 14:38 , Processed in 1.189287 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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