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

本文讲述了作者在使用FreeRTOS时遇到的串口错误,源于任务函数意外返回。通过定位到port.c文件并找到错误原因——一个多余的break语句,解决了问题。作者强调了利用错误信息快速定位和修复的重要性。
摘要由CSDN通过智能技术生成

1.报错的现象与原因

书接上回,本人在FreeRTOS下使用了外部中断,且将调试信息打印至串口。在按键的处理过程中,我采用了长按与短按的判别,但是在调试的过程中,当我长按按键触发的时候发现串口有打印错误信息:
Error: …\Middlewares\FreeRTOS\portable\RVDS\ARM_CM4F\port.c, 233
如下图所示:
在这里插入图片描述
并且在此之后RTOS系统停止了运行,直到外部硬件复位之后恢复正常。
经过查找资料发现可以到port.c文件中查看错误原因,OK,那就去看一下。
首先,通过错误信息可以知道port.c文件所在的路径,这就方便我们查找了
在这里插入图片描述
然后根据后面的错误代码定位到233行:
在这里插入图片描述
这里就详细说明了我们产生错误的原因,虽然可能看不太明白(懒得看),但是不要慌,打开翻译软件直接ctrl cv:
在这里插入图片描述
虽然翻译的内容可能有一点拗口,但是大概的意思就是我们的任务函数(线程)是不能够返回的,如果需要达到返回的目的,可以通过vTaskDelete函数将该任务删除。
翻译一下:
我们在任务中不小心让任务返回了,比如在线程中使用了“break”导致跳出了线程的while()循环。

2.解决办法

知道原因就好办了,我们直接返回到线程中查看,果然,在我的内容中出现了一个不应该存在的“break”(是我在copy的时候不小心保留的)导致了线程的意外终止。
在这里插入图片描述

3.结果

那我们将这个“break删除就行了,再次编译下载,长按按键,查看调试信息:
在这里插入图片描述
发现可以正常触发长按效果,且任务系统也能够继续正常运行,解决!

4.总结

此次调试最大的收获就是可以通过串口打印的错误信息回溯到port.c文件中查看具体的报错内容,这样也就可以更快地定位错误信息,并且快速解决!
【灵感来源&感谢该博主】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值