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