返回顶部
首页 > 资讯 > 精选 >使用FreeRTOS遇到死等异常怎么解决
  • 664
分享到

使用FreeRTOS遇到死等异常怎么解决

2023-06-29 22:06:38 664人浏览 独家记忆
摘要

本篇内容介绍了“使用FreeRTOS遇到死等异常怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题场景:在使用apollo3时,调试

本篇内容介绍了“使用FreeRTOS遇到死等异常怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

问题场景:

在使用apollo3时,调试时发现在ADC中断中一发送信号量就卡住。

追溯代码:

追溯代码发现其实是在ADC中断中调用xQueueGenericSendFromISR就卡住,卡住位置如下

使用FreeRTOS遇到死等异常怎么解决

这个宏定义如下

使用FreeRTOS遇到死等异常怎么解决


继续往里看,发现卡在下面位置

使用FreeRTOS遇到死等异常怎么解决

此断言如下

使用FreeRTOS遇到死等异常怎么解决

所以打印看到的条件是0>=128,所以就while(1);卡在这里了

分析代码

使用FreeRTOS遇到死等异常怎么解决

使用FreeRTOS遇到死等异常怎么解决

这是获得ipsr寄存器的值,保存在ulCurrentInterrupt变量,那ipsr寄存器代表的是什么呢,这里有写https://blog.csdn.net/weixin_41572450/article/details/105027244
表示中断编号,而这个宏

使用FreeRTOS遇到死等异常怎么解决

表示用户中断编号是从16开始,1-15就是我们熟悉的内核中断编号,如下

使用FreeRTOS遇到死等异常怎么解决

使用FreeRTOS遇到死等异常怎么解决

apollo的中断编号如下

使用FreeRTOS遇到死等异常怎么解决

可以看到内核部分也是16个,其中ADC的中断编号编到32(注意这里要加上内核的16个编号),
所以

if( ulCurrentInterrupt >= portFIRST_USER_INTERRUPT_NUMBER )

这个条件是说当产生了外部中断,就走if条件里面,

使用FreeRTOS遇到死等异常怎么解决

使用FreeRTOS遇到死等异常怎么解决

使用FreeRTOS遇到死等异常怎么解决

归纳下就是

ucCurrentPriority = ( uint8_t * )(0xE000E3F0+ulCurrentInterrupt)即ucCurrentPriority = ( uint8_t * )(0xE000E3F0+32)即ucCurrentPriority = ( uint8_t * )(0xE000E400+16)

其中,0xE000E400是NVIC->IP寄存器地址

使用FreeRTOS遇到死等异常怎么解决

这里存放的外部中断的中断优先级,如下

使用FreeRTOS遇到死等异常怎么解决

所以这里的0>=128的0是IP[ADC]寄存器复位值,就是把ADC中断优先级设置成0了,说明初始化时没有设置ADC优先级,检查下果然漏了,添加下面设置就没问题了

使用FreeRTOS遇到死等异常怎么解决

那128是怎么来的?如下

使用FreeRTOS遇到死等异常怎么解决

使用FreeRTOS遇到死等异常怎么解决

使用FreeRTOS遇到死等异常怎么解决

所以是128.

最后发现之前大段英文注释有说这个问题,最后还有网址
Https://www.freertos.org/FAQHelp.html
如下说明

使用FreeRTOS遇到死等异常怎么解决

“使用FreeRTOS遇到死等异常怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 使用FreeRTOS遇到死等异常怎么解决

本文链接: https://lsjlt.com/news/326570.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用FreeRTOS遇到死等异常怎么解决
    本篇内容介绍了“使用FreeRTOS遇到死等异常怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题场景:在使用apollo3时,调试...
    99+
    2023-06-29
  • 使用FreeRTOS遇到死等异常的解决
    目录问题场景:追溯代码:分析代码问题场景: 在使用apollo3时,调试时发现在ADC中断中一发送信号量就卡住。 追溯代码: 追溯代码发现其实是在ADC中断中调用xQueueGene...
    99+
    2024-04-02
  • vue遇到异常要怎么处理
    这篇文章主要介绍了vue遇到异常要怎么处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue遇到异常要怎么处理文章都会有所收获,下面我们一起来看看吧。Vue.js异常类型在Vue.js应用中,可能会遇到一下类...
    99+
    2023-07-05
  • Java遇到java.lang.ClassCastException异常原因和解决办法
    目录 问题描述  问题原因 解决办法 问题描述 今天在进行项目运行测试时候出现如下的错误: io.github.xxyopen.novel.dto.UserInfoDto (io.github.xxyopen.novel.dto.Us...
    99+
    2023-09-11
    java spring boot 中间件 redis
  • 使用nodeAPI时遇到过异步问题解决
    目录问题总结问题 闲逛技术群时常常看到群友遇到异步问题, 这里就最近看到的问题做个解答: 问题大致是这样: 下面这段代码, 是希望输出456的, 但实际上却输出了[], 因为rea...
    99+
    2023-01-28
    nodeAPI异步问题 nodeAPI 异步
  • java connection使用异常怎么解决
    在Java中,使用java.sql.Connection对象连接数据库时可能会出现异常。以下是处理异常的一些常见方法:1. 检查数据...
    99+
    2023-10-23
    java
  • java integer.parseint使用异常怎么解决
    在使用Integer.parseInt()方法时,如果字符串不能转换为整数,则会抛出NumberFormatException异常。...
    99+
    2024-02-29
    java
  • SpringBoot启动遇到的异常问题及解决方案
    目录SpringBoot启动遇到异常1、 问题2、异常3、异常4、异常5、 异常6、异常7、异常SpringBoot优雅的处理异常使用异常创建统一异常类测试SpringBoot启动遇...
    99+
    2024-04-02
  • 使用nodeAPI时遇到过异步问题如何解决
    这篇文章主要讲解了“使用nodeAPI时遇到过异步问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用nodeAPI时遇到过异步问题如何解决”吧!问题闲逛技术群时常常看到群友遇到异...
    99+
    2023-07-05
  • win10系统dcom遇到错误1068导致死机怎么解决
    这篇文章主要介绍“win10系统dcom遇到错误1068导致死机怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10系统dcom遇到错误1068导致死机怎么解决”文章能帮助大家解决问题。...
    99+
    2023-07-01
  • 使用vue导出excel遇到的坑怎么解决
    这篇“使用vue导出excel遇到的坑怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“使用vue导出excel遇到的坑...
    99+
    2023-06-29
  • vue3中使用swiper遇到的问题怎么解决
    这篇文章主要介绍了vue3中使用swiper遇到的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue3中使用swiper遇到的问题怎么解决文章都会有所收获,下面我们一起来看看吧。一、安装swipe...
    99+
    2023-07-06
  • 怎么使用不同的React hooks来解决日常所遇到的问题
    这篇文章主要讲解了“怎么使用不同的React hooks来解决日常所遇到的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用不同的React hoo...
    99+
    2024-04-02
  • 解决使用openpyxl时遇到的坑
    最近在用python处理Excel表格是遇到了一些问题 1, xlwt最多只能写入65536行数据, 所以在处理大批量数据的时候没法使用 2, openpyxl 这个库, 在使用的时...
    99+
    2024-04-02
  • 怎么在java中使用BigDecimal解决异常
    本篇文章为大家展示了怎么在java中使用BigDecimal解决异常,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程...
    99+
    2023-06-14
  • 使用win8遇到的常见问题介绍与解决方法
      问题1. 软件乱码多  这个问题恐怕是最令新手们头疼了,毕竟乱码不比英文,甭管你用什么翻译软件,想要弄清里面的内容几乎完全没有可能。那么遇到此类问题,我们到底该如何解决呢?  很简单,首先进入Contr...
    99+
    2022-06-04
    常见问题 解决方法
  • Python raise关键字使用异常怎么解决
    在Python中,`raise`关键字用于手动引发异常。当我们在代码中遇到特定条件时,可以使用`raise`关键字来引发一个异常。要...
    99+
    2023-10-11
    Python
  • vue使用mui遇到的坑及解决
    目录使用mui遇到的坑记录mui的js冲突了,有2种解决方法方法1方法2使用mui遇到的坑记录 主要用到webpack打包工具与mui,mint ui,其中mui有不少坑,在此记录 ...
    99+
    2024-04-02
  • 使用@ApiModel遇到的问题及解决
    目录@ApiModel遇到的问题1. 习惯2. 遇坑3. 排查4. 解决@ApiModel和@ApiModelProperty版本@ApiModel@ApiModelProperty...
    99+
    2024-04-02
  • 怎么解决jedis异常
    这篇文章主要讲解了“怎么解决jedis异常”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决jedis异常”吧!1.jedis机器-->ping-...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作