历史上的今天
今天是:2025年03月11日(星期二)
2020年03月11日 | STM32开发笔记71: 解决FreeRTOS任务的内存分配问题
2020-03-11 来源:eefocus
单片机型号:STM32F091RCT6
在使用FreeRTOS进行程序设计时,遇到任务不能运行的问题,具体程序如下:
DebugOutput("启动USB通讯线程...rnrn");
osThreadDef(usbTask, StartUsbTask, osPriorityNormal, 0, 128);
usbTaskHandle = osThreadCreate(osThread(usbTask), NULL);
DebugOutput("启动雷达红外通讯线程...rnrn");
osThreadDef(irdaTask, StartIrdaTask, osPriorityNormal, 0, 128);
irdaTaskHandle = osThreadCreate(osThread(irdaTask), NULL);
DebugOutput("启动GPRS通讯线程...rnrn");
osThreadDef(gprsTask, StartGprsTask, osPriorityNormal, 0, 128);
gprsTaskHandle = osThreadCreate(osThread(gprsTask), NULL);
程序创建了3个线程,但是第3个任务不能正常运行。尝试多种方法解决,最后发现问题在于任务的堆栈的分配上,减小任务分配的堆栈大小,3个线程可以正常运行。
我现在使用的是STM32F091RCT6单片机,RAM为32K,所以确认不是硬件问题,应该和FreeRTOS的配置有关。
通过FreeRTOS的官方手册,最后确认到配置的参数为configTOTAL_HEAP_SIZE,其解释为静态分配内存的大小,其在FreeRTOSConfig.h中,增大其值后程序正常运行。
#define configUSE_PREEMPTION 1
#define configSUPPORT_STATIC_ALLOCATION 0
#define configSUPPORT_DYNAMIC_ALLOCATION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( SystemCoreClock )
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 7 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
#define configTOTAL_HEAP_SIZE ((size_t)4 * 1024)
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_16_BIT_TICKS 0
#define configUSE_MUTEXES 1
#define configQUEUE_REGISTRY_SIZE 8
史海拾趣
|
随着性能不断提高,成本持续降低,FPGA在各个领域都得到了广泛应用。 红色飓风载选了一些国内核心期刊上发表的FPGA设计方面的论文,供大家参考! 希望对正在从事FPGA设计的工程技术人员或者高校里面做毕业设计的学生有一点点帮助。 ====== ...… 查看全部问答> |
|
节能极限化 挑战节能极限,一度灯采用220伏电源,内置数颗微型高效能发光珠、恒流集成块,设计功率为1W,经测试其亮度相当于普通白炽灯的25~40W,一盏灯可满足一个普通房间的日常照明、写字、看书学习。使用时用普通电表、数码电表检测 ...… 查看全部问答> |
|
1,我的开发环境为evc4+ppc2003+中文镜像 下载了个freepyCE,编译通过,看freepyCE自带的安装说明,替换了注册表中的键值: HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Layouts\\e0010804修改,把Ime File键值从msimepy.dll改为fr ...… 查看全部问答> |
|
注册机分为三部分,分别为PartA,PartB,PartC此注册机支持的软件如下:(2011年12月02日最新版)PartA: IAR Embedded Workbench For MSC-51 v8.10 IAR Embedded Workbench For Atmel AVR v5.51 IAR Embedded Workbench For Atmel AVR32 v4.10 IAR E ...… 查看全部问答> |




