搜索
bottom↓
回复: 6

咨询一个Freertos问题,关于FromISR中断安全通信API

[复制链接]

出105入79汤圆

发表于 2022-4-14 15:00:18 | 显示全部楼层 |阅读模式
咨询大佬们一个问题,最近在看Freertos,部分进程之间通信函数,都有有FromISR(中断安全)版本,函数内增加了HigherPriorityTaskWoken这项参数。

我看例子代码合说明是这样处理的: 这项参数传入pdFALSE, 如 “
  1. BaseType_t HigherPriorityTaskWoken = pdFALSE;  xStreamBufferSendFromISR(my_stream, (void *) uart8_Rxdata, 16, &HigherPriorityTaskWoken);”
复制代码
剩下的工作会系统自动处理,在退出中断后立刻唤醒一些任务,进行上下文切换,(如果有的话)。

看到V9.0以后的版本,是否是只要设置为pdFALSE即可,剩下不用管。这个机制是用于中断内唤醒高优先级任务使用的。

疑问1:但是高优先级任务是不需要唤醒的,任务内OSdelay时间到了就会抢断CPU自动切换进来。为啥还要加入额外:HigherPriority(高优先级)Task(任务)Woken(唤醒)。

疑问2:我上文表述的 FromISR(中断安全)版本 理解是否正确。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入4汤圆

发表于 2022-4-14 16:03:47 | 显示全部楼层
1. 就是为了中断后快速进行任务切换,不需要等到系统节拍到来以后。  2. 要让高优先级任务能在中断后快速切换,除了上面两个语句还要加上:portYIELD_FROM_ISR(xHigherPriorityTaskWoken);

出105入79汤圆

 楼主| 发表于 2022-4-14 16:35:28 | 显示全部楼层
banyai 发表于 2022-4-14 16:03
1. 就是为了中断后快速进行任务切换,不需要等到系统节拍到来以后。  2. 要让高优先级任务能在中断后快速切 ...
(引用自2楼)

谢谢大侠指点

出0入12汤圆

发表于 2022-4-15 07:03:21 | 显示全部楼层
不是专家,仅供参考。

带 FromISR 的函数有很明确的意思,也就是说这些函数是可以在中断里面调用的。

中断调用之后,待中断退出,多数会进行任务调度。正常情况下,任务调度会选择最高优先级的任务进行任务切换,然后继续。

pxHigherPriorityTaskWoken 是函数的返回,表示是否有 blocked 的任务被唤醒,而且任务的优先级比被中断打断的任务的优先级还高。事例代码里面有使用的例子,基本就是切换到这个任务来执行,绕过调度器。

出105入79汤圆

 楼主| 发表于 2022-4-15 12:19:31 | 显示全部楼层
本帖最后由 qwe2231695 于 2022-4-15 12:27 编辑

现在已经很清楚了,正在执行一个低优先级任务比如等待用户按键输入(绿色任务),现在ADC中断来了,中断内获得了最新ADC数值,现在想要立刻进行滤波任务处理,得到 xHigherPriorityTaskWoken == pbTRUE ,调用 portYIELD_FROM_ISR来立即唤醒一个高优先级ADC滤波处理任务(下图蓝色任务)。 前提是这个高优先级任务必须要正在等待数据而被挂起。 而那些因为OsDelay()休眠固定时间的高优先级任务不会被唤醒。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出100入143汤圆

发表于 2022-4-15 13:37:35 | 显示全部楼层
调用FroomISR的中断优先级要大于 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 此值

出105入79汤圆

 楼主| 发表于 2022-4-15 15:30:09 | 显示全部楼层
zzh90513 发表于 2022-4-15 13:37
调用FroomISR的中断优先级要大于 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 此值
(引用自6楼)

  谢谢提醒,学无止境啊,内容很多
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-3 11:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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