你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

新手求助,FreeRTOS里在中断中挂起任务出错

[复制链接]
jerry2cool 提问时间:2020-1-29 10:12 /
各位大佬,新手刚学习FreeRTOS,现在想在中断中挂起某个任务,我在教程里看到说有中断中的恢复函数xTaskResumeFromISR,但是没有在中断中的挂起函数,我搜了一下,有人说直接用vTaskSuspend就行,我在中断中就直接用了,结果确实不行,停在了下图中的位置,请问一下,vTaskSuspend确实不能在中断中用么?那如果我想在中断中挂起某个任务,应该怎么操作呢?多谢。。。。


QQ截图20200129100526.png
收藏 评论2 发布时间:2020-1-29 10:12

举报

2个回答
踮起脚摘苹果 回答时间:2020-1-31 12:45:26
vTaskSuspendAll()
   将调度器锁定,可执行嵌套的挂起任务调度器。任务调度器挂起后不能进行上下文的切换,但是中断仍然使能,当调度器被挂起后,如果有中断需要进行上下文切换,那么中断将会被挂起,在调度器恢复后才响应这个中断。调度器恢复可以调用 xTaskResumeAll()函数,调用了多少次的 vTaskSuspendAll()就要调用多少次xTaskResumeAll()进行恢复
void vTaskSuspendAll( void )
{
    ++uxSchedulerSuspended;
}  

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

评分

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

查看全部评分

jerry2cool 回答时间:2020-2-3 09:44:01
hejun96 发表于 2020-1-31 12:45
vTaskSuspendAll()
   将调度器锁定,可执行嵌套的挂起任务调度器。任务调度器挂起后不能进行上下文的切换 ...

非常感谢。。。。。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版