最近在使用FreeRTOS的时候,突然发现程序在运行了几分钟之后所有的任务都不再调用了,只有几个中断能正常使用,看来是系统挂掉了,连续测试了几次想找出问题,可是这个真的有点不知所措。
我先看了下文档里的常见错误,发现和我现在有关系的也就堆栈大小的设置和中断嵌套优先级的设置了,不过我这几个任务都是比较简单的,没有太多的变量,那么现在设置的堆栈大小是够的,不然也不会运行一段时间才奔溃,应该一运行就会奔溃的。那么把问题就集中到了中断嵌套优先级里,我尝试了把 configKERNEL_INTERRUPT_PRIORITY = 15/configMAX_SYSCALL_INTERRUPT_PRIORITY = 10结果程序比之前更不如,直接进入了HardFault异常,那么只能看看相关的说明和解释了。
看了下文档里的介绍,configKERNEL_INTERRUPT_PRIORITY 是设置系统心跳时钟的中断优先级,configMAX_SYSCALL_INTERRUPT_PRIORITY是设置中断安全版本FreeRTOS API 可以运行的最高中断优先级。且建立一个全面的中断嵌套模型需要设置 configMAX_SYSCALL_INTERRUPT_PRIRITY

为比configKERNEL_INTERRUPT_PRIORITY 更高的优先级。而基于Cortex-M3中断优先级的特点,优先级是数值越低优先级越高,即0是最高优先级,255是最低优先级。貌似我设置的和这个不冲突啊,没办法去google去,找到了一个解释:

    configMAX_SYSCALL_INTERRUPT_PRIORITY needs to be a raw priority value as it is written to the NVIC priority registers in the Cortex-M3 device, as documented in the ARM manuals. The priorities of 0..15 are not real Cortex-M3 priorities, and are simplified priorities for use in some library calls (because the real priorities are so complex on Cortex-M devices).If you want a simplified priority of 8, then you need to set configMAX_SYSCALL_INTERRUPT_PRIORITY to 0x8n, where n can be any value, but by convention, and for future proofing in case future STM32 parts implement more priority bits, should be set to f. Therefore, the priority you want is 0x8f.“the code app-faults at "svc 0" in vPortStartFirstTask”Presumably a hard fault because you are attempting a call to effectively a synchronous interrupt while simultaneously having that interrupt masked out.

    看到这里的解释我知道了问题,原来我之前那样的设置是相当于无效的,出问题时肯定的了,优先级设置原来是0xbx,才相当于11的优先级,原来/* equivalent to 0xb0, or priority 11. */这段注释是这个意思,不过一般看到这个注释还真联系不起来,还好找到原因了,下面测试下任务是不是还会挂掉。
下面这个图是一个RTOS中断优先级的说明,如果系统的优先级比configMAX_SYSCALL_INTERRUPT_PRIORITY高,则这些中断可以直接触发,不会被RTOS延时,如果优先级比其低,则有可能被RTOS延时。

转载于:https://www.cnblogs.com/nixianmin/p/3177426.html

FreeRTOS 中断优先级嵌套错误引发HardFault异常解决相关推荐

  1. GD32F30x Keil 环境下在 FreeRTOS 任务中使用浮点运算报 HardFault 异常的问题(二)

    文章目录 1 问题描述 1. 1 环境 1. 2 问题 2 参考资料 3 来龙去脉 3.1 定位问题 3.2 xPortPendSVHandler 3.3 EXC_RETURN 3.4 寄存器 3.5 ...

  2. python错误-新手常见Python错误及异常解决处理方案

    写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...

  3. 怎么解决python遇到问题_新手常见Python错误及异常解决处理方案

    新手常见Python错误及异常解决处理方案,异常,错误,语句,子句,代码 新手常见Python错误及异常解决处理方案 易采站长站,站长之家为您整理了新手常见Python错误及异常解决处理方案的相关内容 ...

  4. MathWorks.MATLAB.NET.Arrays.MWArray”的类型初始值设定项引发异常 解决方法

    MathWorks.MATLAB.NET.Arrays.MWArray"的类型初始值设定项引发异常 解决方法 参考文章: (1)MathWorks.MATLAB.NET.Arrays.MWA ...

  5. python常见错误-新手常见Python错误及异常解决处理方案

    写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...

  6. clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)

    clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创) 参考文章: (1)clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原 ...

  7. “Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法

    "Emgu.CV.CvInvoke"的类型初始值设定项引发异常 解决办法 参考文章: (1)"Emgu.CV.CvInvoke"的类型初始值设定项引发异常 解决 ...

  8. 异常解决之——无法在Web服务器上启动调试。远程服务器返回错误:(405)

    最近调试webapi出现错误:异常解决之--无法在Web服务器上启动调试.远程服务器返回错误:(405) 英文异常:Unable to start debugging on the web serve ...

  9. (xxx.dll)处(位于xxx.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000003F 时发生访问冲突。已解决。

    下面两个这种类型的报错都一样.(跟xxx.dll和xxx.exe都没关系) 0x794CECC1 (Qt5Cored.dll)处(位于 xxx.exe 中)引发的异常: 0xC0000005: 读取位 ...

最新文章

  1. 不同屏幕分辨率 坐标_干货 | 小议光固化3D打印XY轴分辨率精度
  2. BigDecimal去除末尾多余的0
  3. WWW 2020 开源论文 | 异构图Transformer
  4. VS2015中DataGridView的DataGridViewComBoboxCell列值无效及数据绑定错误的解决方法
  5. 丰富自己的代码库-快速排序
  6. Objective-C模版方法(TemplateMethod)
  7. openstack 王者归来学习笔记
  8. iPhone 13需求旺盛 富士康再度重金招工
  9. 使用Asp.net的TreeView来构建用户选择输入
  10. Win7 FTP搭建
  11. 第三方服务--短信接口
  12. matlab 最小二乘解超定方程,matlab 超定方程 最小二乘解
  13. 远程桌面提示无法连接远程计算机,远程桌面无法连接,小编教你电脑远程桌面无法连接怎么办...
  14. 计算机桌面出现蓝色底色,桌面图标有蓝色背景的7种解决办法
  15. 手把手教你:基于深度学习的滚动轴承故障诊断
  16. 【考研英语】考研英语小作文万能模板(致歉信)
  17. 优化算法(四)——粒子群优化算法(PSO)
  18. ODL MD-SAL Data Transactions
  19. (无Xcode)Mac OS X中解决 make,gcc等命令找不到
  20. 637. Average of Levels in Binary Tree

热门文章

  1. 一次 Druid 连接池泄露引发的血案!
  2. 这几种思维模式,都是你的职业发展的绊脚石
  3. 这才是实现分布式锁的正确姿势!
  4. Python 函数参数的分类及使用方法
  5. 数据结构-冒泡排序最优代码(C语言)
  6. .html天气预报上蔡,上蔡天气预报15天
  7. 北京排查利用数据中心挖矿,IDC矿场受影响较大
  8. 各色“独特的”数据中心安置法,藏太深了!
  9. 网络的概念与网络的基本分类
  10. CCHP分布式能源技术在数据中心IDC的应用