关于FreeRTOS创建多任务时,Error:\FreeRTOSsrclqueue.c,927,Error:\FreeRTOS\port\RVDS\ARM CCM4F\por.c 784,解决方案。

以STM32F4系列的硬件平台为例;

问题概述:

创建多个任务时,例如创建的任务数超过了10个,或者很多消息队列/信号量之类的,编译时没有问题,但是运行时,就直接报错,如下:

解决方案:

找到如下图的头文件,FreeRTOSConfig.h

注意一下,紫色框中内容,把参数适当调高,如果任务中优先级过高,修改一下对应的参数,最重要的是修改一下队列记录的那个参数,一般移植好,默认是8或者10,适当的调高,还有系统总堆的大小,系统移植好一般是比较小的,最高可以设置为64*1024的

原因是:调高记录个数,此宏定义记录的是队列和信号量的总个数,设置的个数高于这个参数,编译有可能就编译不过了

修改总堆大小是因为,每次创建任务,都会分配对应的大小,大小多少是由你自己设置的,这里的大小就是申请的这里的堆大小,当然你创建的任务多了,此参数肯定也要适当调高,以STM32F405RGT6为例子,最大就是64*1024。至于可以设置多少还要视自己的芯片的存储分配而定。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值