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

新手求助,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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版