硬汉嵌入式论坛

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

[FreeRTOS] freertos每次运行中断服务函数后都是从优先级最高的任务开始运行的吗

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2016-9-9 10:02:19 | 显示全部楼层 |阅读模式
如果我有 Task1(优先级比Task2高),Task2(优先级比Task1低)。
我正在运行Task2的时候,有一个外部中断产生了,


1.等我处理完这个中断后,是不是开始运行Task1??


2.我可不可以改成处理完这个中断后 接着从Task2运行呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2016-9-9 10:10:16 | 显示全部楼层
如果中断服务程序里面没有调用FreeRTOS的API函数,将Task1从挂起态或者阻塞态恢复,且调用了函数portYIELD_FROM_ISR,

是不会切换到Task1的。
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-9-9 11:07:48 | 显示全部楼层
portYIELD_FROM_ISR()是强制任务切换呢。
我可不可以这样理解:如果中断服务程序里面没有调用 将Task1从挂起态或者阻塞态恢复的 API函数,也没有调用portYIELD_FROM_ISR,就不会切换到Task1对吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2016-9-9 11:17:46 | 显示全部楼层

回 salon202 的帖子

salon202:portYIELD_FROM_ISR()是强制任务切换呢。
我可不可以这样理解:如果中断服务程序里面没有调用 将Task1从挂起态或者阻塞态恢复的 API函数,也没有调用portYIELD_FROM_ISR,就不会切换到Task1对吗? (2016-09-09 11:07)
portYIELD_FROM_ISR()不是强制任务切换,是用来设置是否使能PendSV中断,你的高优先级任务就绪了执行PendSV中的任务切换才有意义,高优先级任务没有就绪还是退回原来的任务。
portYIELD_FROM_ISR函数是跟中断里面的API函数组合使用,任意找一个我们的中断例子,看下就明白了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 03:58 , Processed in 0.153221 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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