【STM32 FreeRTOS 791报错的原因以及处理】

本文讲述了在FreeRTOS环境下,使用外部中断时遇到的串口错误,原因是中断优先级超出FreeRTOS管理范围。通过将中断优先级降低到5或以下,问题得以解决,提醒开发者注意外设中断优先级与系统管理的关系。
摘要由CSDN通过智能技术生成

1.报错的现象与原因

本人在FreeRTOS下使用了外部中断,且将调试信息打印至串口,在调试的过程中,当我按下按键触发外部中断的时候发现串口有打印错误信息,如下图所示:
在这里插入图片描述
经过查找资料与分析发现是由于外部中断不在FreeRTOS的中断管理内所致的,中断管理的范围见FreeRTOSConfig.h头文件中的该语句确定
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
如下图所示:
在这里插入图片描述
由该配置可知FreeRTOS可以管理的最高中断优先级为5,检查自己的中断优先级可以发现中断优先级被我设置为2,如下图所示:
在这里插入图片描述
这就导致了外部中断没有在FreeRTOS的管理之内,从而出现报错。

2.解决办法

将外部中断优先级改为FreeRTOS所能管理的范围之内,即小于等于5即可(次数我设置为6)
在这里插入图片描述

3.结果

修改完成之后没有再报错,串口调试信息如下:

在这里插入图片描述

4.总结

在FreeRTOS下,若出现以下报错内容需要检查自己的外设中断优先级是否在系统的中断管理范围之内。
Error: …\Middlewares\FreeRTOS\portable\RVDS\ARM_CM4F\port.c, 791

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值