你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32F407平台上使用freertos,使用pvPortMalloc申请内存,发现内存中的数据总被修改,使用malloc就没有问题。

[复制链接]
小楼111 提问时间:2025-1-21 11:42 / 未解决

如题,我现在在stm32F407平台上打开FREERTOS,然后使用pvPortMalloc动态申请内存的时候,发现这块内存中的数据总是变化,后面改为malloc申请,内存中的数据就符合预期了,我已经按照网上的流程配置了freertos,不知道是什么原因导致这种现象?

收藏 评论4 发布时间:2025-1-21 11:42

举报

4个回答
xmshao 回答时间:2025-1-21 13:35:01
两点提醒:
1、在工程里设置合适的系统栈大小,这点通常在启动文件里配置即可。它用于处理异常或中断。


2、在RTOS里设置合适的堆内存大小,比方  #define configTOTAL_HEAP_SIZE       ( ( size_t ) ( 10* 1024 ) )
小楼111 回答时间:2025-1-21 14:04:23

xmshao 发表于 2025-1-21 13:35
两点提醒:
1、在工程里设置合适的系统栈大小,这点通常在启动文件里配置即可。它用于处理异常或中断处理。 ...

Hi,xmshao:

我查看了工程中的堆栈配置,在FreeRTOSConfig.h文件中:

define configMINIMAL_STACK_SIZE ((uint16_t)128)

define configTOTAL_HEAP_SIZE ((size_t)15360)

这样的配置是合理的吗?

xmshao 回答时间:2025-1-21 15:40:59

小楼111 发表于 2025-1-21 14:04
Hi,xmshao:</p>
<p>我查看了工程中的堆栈配置,在FreeRTOSConfig.h文件中:

[md]这看不出有啥不合理的。

onfigTOTAL_HEAP_SIZ的大小15KB,不小了,一般来讲应该够用了。

具体是否够用,跟你创建的任务、任务栈大小以及其它RTOS资源,比方队列、信号量的多少有关。

你也可以参考下例程的配置。

另外,不知你选择的是哪种内存管理方案,通常选用heap_4.c内存管理方案。

小楼111 回答时间:2025-1-22 09:12:14

xmshao 发表于 2025-1-21 15:40
这看不出有啥不合理的。</p>
<p><code>onfigTOTAL_HEAP_SIZ</code>的大小15KB,不小了,一般来讲应该够用了。

[md]我选择的是heap_4的内存管理方案,这个现象很奇怪,在网上我也没有找到对应的类似问题,另外,我使用xSemaphoreTake和xSemaphoreGive来实现的mutex功能,发现使用后会死锁,我不清楚是否freertos使用还需要什么配置,才能启用这些接口。

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版