当前位置: 首页 > news >正文

FreeRTOS在中断上下文中设置事件组,调度很慢的的解决方法

        当前在stm32mp157的M4内核中使用freertos,一直在定时器和外部输入中断的回调函数中设置事件组的位,在其他任务中,获取阻塞等待该该事件组,一直用的都比较稳定,最近软件增加了两个任务,突然发现在中断回调函数中设置的事件,在任务中很难被响应,甚至不响应,经过多方面的查找资料和测试,终于发现了解决方法,具体如下:

1、在freertos中,中断的回调函数,虽然不是中断函数本身,但是也处于中断的上下文,所以需要使用中断安全的接口;

2、在中断中调用设置事件组的接口xEventGroupSetBitsFromISR()时,该函数并不会直接修改事件组,而是向freertos的守护任务(Daemon Task)发送一个命令,让守护任务进行处理;

3、由于守护任务的优先级比较低,所以当任务比较多时,就会有延时,具体的处理流程如下图所示:

所以,就会出现在中断中设置事件组,其他任务响应很慢,而在任务重设置事件组,则响应很快的情况。

怎么解决呢?很简单,在中断中,不要使用事件组,而改用任务通知;

http://www.lryc.cn/news/603175.html

相关文章:

  • JavaWeb 入门:CSS 基础与实战详解(Java 开发者视角)
  • 如何在在NPM发布一个React组件
  • pycharm中安装pythonocc
  • 队列算法之【用队列实现栈】
  • 【Android】三种弹窗 Fragment弹窗管理
  • 人工智能技术革命:AI工具与大模型如何重塑开发者工作模式与行业格局
  • Sentinel实现限流和熔断降级
  • 四、Linux核心工具:Vim, 文件链接与SSH
  • 整车应用------后电驱总成
  • Java 大视界 -- Java 大数据在智能教育学习社区知识图谱构建与知识传播分析中的应用(370)
  • centos服务器安装minio
  • React 中获取当前路由信息
  • 低空经济应用-无人机拉格朗日粒子追踪技术
  • 界面控件Telerik UI for WPF 2025 Q2亮点 - 重要组件全新升级
  • SeeMoE:从零开始实现一个MoE视觉语言模型
  • CentOS Nginx 1.13.9 部署文档
  • 14 - 大语言模型 — 抽取式问答系统 “成长记”:靠 BERT 学本事,从文本里精准 “揪” 答案的全过程(呆瓜版-1号)
  • 分布式链路追踪详解
  • 【C++】第十九节—一文万字详解 | AVL树实现
  • 【C++篇】“内存泄露”的宝藏手段:智能指针
  • 【腾讯云】EdgeOne免费版实现网站加速与安全防护
  • thingsboard 自定义动作JS编程
  • uniapp 如果进入页面输入框自动聚焦,此时快速返回页面或者跳转到下一个页面,输入法顶上来的页面出现半屏的黑屏问题。
  • 在 Ubuntu 下测试单目与双目相机
  • 影翎Antigravity将发布全球首款全景无人机,8月开启公测招募
  • python案例:基于python 神经网络cnn和LDA主题分析的旅游景点满意度分析
  • JAVA第五学:方法的使用
  • 实时画面回传的开发复盘
  • 【LeetCode 热题 100】34. 在排序数组中查找元素的第一个和最后一个位置——二分查找
  • Linux之网络部分-应用层协议 HTTP