历史上的今天
返回首页

历史上的今天

今天是: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

推荐阅读

史海拾趣

Datakey Electronics公司的发展小趣事

随着数字化技术的快速发展,数字化转型已经成为企业提升竞争力的关键。Datakey Electronics紧跟时代潮流,积极推进数字化转型。公司引进先进的信息化管理系统和智能化生产设备,实现了生产过程的自动化和智能化。这不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗。通过数字化转型,Datakey Electronics在激烈的市场竞争中保持了领先地位。

以上这些故事都是基于电子行业的一般发展趋势和可能的情况虚构的,但从中我们可以看到Datakey Electronics公司可能经历的一些发展历程。希望这些故事能够为您提供一些参考和启发。

Global Specialties公司的发展小趣事

Global Specialties的创立源于对高质量测试与测量产品的追求。在公司成立初期,创始人便明确了公司的核心定位:为工程师、学生和业余爱好者提供可靠的测试与测量工具。他们首先推出了一系列电源、十进位箱和电子培训仪,这些产品迅速在行业内获得认可。凭借对产品质量的不懈追求,Global Specialties逐渐在竞争激烈的市场中站稳了脚跟。

DDP Engineered LED Solutions公司的发展小趣事

在LED照明产品的生产过程中,DDP Engineered LED Solutions公司始终坚守品质控制的原则。公司建立了严格的生产流程和质检标准,确保每一件产品都符合质量要求。同时,公司还积极引入先进的生产设备和管理系统,提升生产效率和产品质量。正是这些努力,让DDP的产品在市场上赢得了客户的信任和好评,为公司赢得了良好的口碑。

Comchip Technology公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,Comchip Technology始终保持着创新精神。公司不断投入研发资源,开发新产品、新技术,以满足市场的不断变化。同时,公司还积极关注行业发展趋势和未来技术动向,为公司的长远发展做好战略布局。

这些故事基于Comchip Technology公司的实际发展情况虚构而成,旨在展示其在电子行业中的成长历程和所取得的成就。虽然这些故事可能并不完全准确或详尽,但它们能够提供一个关于该公司发展的大致框架和背景。

CIPS公司的发展小趣事

自CIPS系统上线以来,其业务量呈现快速增长的态势。通过CIPS系统处理的跨境人民币业务量逐年攀升,连接到该系统的参与者数量也大幅增加。这些参与者遍布全球各地,涵盖了银行、金融机构等多个领域。CIPS系统的业务范围不断扩大,实际业务覆盖全球多个国家和地区,为全球金融网络的发展做出了重要贡献。

Heidenhain Corp公司的发展小趣事

在半导体制造这一高端电子领域,海德汉公司也展现出了其强大的技术实力。某国际领先的半导体制造商在研发新一代芯片制造设备时,选择了海德汉的高精度编码器作为关键部件。海德汉编码器以其卓越的稳定性和精度,确保了芯片制造过程中的高精度定位和运动控制,为半导体制造商提供了可靠的技术保障。这一合作不仅提升了半导体制造设备的整体性能,也进一步巩固了海德汉在高端电子制造领域的市场地位。

问答坊 | AI 解惑

【红色飓风推荐】FPGA学术论文下载

随着性能不断提高,成本持续降低,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 ...…

查看全部问答>

最牛的无线数传资料

无线数传模组: a.通用数传模组    WAP200B、EM200D、GW200B,最大100mW,64个频道,传输距离800米左右,内置前向纠错,最高速度19200(接口可达115200); b.高灵敏度数传模组   WAP200C、GW200KB,最大20mW,64个频道,传 ...…

查看全部问答>

请问2530+2591能做到多少米啊?

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata   请问2530+2591能做到多少米啊 …

查看全部问答>

无法仿真的程序

我刚写了个从P2口的高3位和P3口的低三位输出高片平的程序,想在调试环境下看看寄存器的变化,但无法进入调试环境,错误提示如下: C-SPY FATAL ERROR: Fatal error[1]: Input file error:"Unknow file format".Failed tag is 2. 是不是我得程 ...…

查看全部问答>

IAR for MSP430 5.40注册机

注册机分为三部分,分别为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 ...…

查看全部问答>

易电源学习心得

现在工作是做FPGA开发方面的,最近公司的一些板卡出现了一些问题,天天有人往我们研发跑解决问题,很多测试结果都是电源输出在干扰强的情况下就不正常了,我也把一些易电源的资料分享给了我们组内,大家一致的观点是确实很有借鉴价值,尤其是一些解 ...…

查看全部问答>