0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32CubeIDE实用技巧之配置Heap空间

jf_pJlTbmA9 来源:STM32单片机 作者:STM32单片机 2023-10-31 17:30 次阅读

问题描述

近日接到一客户需求,其欲在 STM32CubeIDE 中指定堆(Heap)的地址到某一专用的RAM 中。

问题分析

STM32CubeIDE 生成的工程中,默认的堆栈配置示意图如图 1 所示:

wKgaomUD4ciAXRBlAADddNVIirg587.png

解决方法

通过 STM32CubeIDE 生成的工程中,会默认生成 sysmem.c。这个文件中的

__sbrk_heap_end 指针默认赋值为 NULL,我们只需要更改这个指针为目标地址即可达到期望。

例如:默认配置是“static uint8_t *__sbrk_heap_end = NULL;”我们希望将堆的地址分配到 0x20001000 为起始的空间上,可以这样做:

“static uint8_t *__sbrk_heap_end = (uint8_t*)0x20001000;”

注意:由于堆(heap)向上增长,栈(stack)向下增长,所以在手动更改堆的起始地址时,如果定义的堆和栈空间存在重叠区域,STM32CubeIDE 无法识别这种情形,用户应当避免这样的设置。

验证

在 STM32CubeIDE 生成的串口打印的工程,然后按照上面示例修改 sysmem.c 中的__sbrk_heap_end 参数

wKgZomUD4cuAO0nvAACsjQXEThg382.png
wKgZomUD4c2AXBrGAABlsW52NXc575.png

可以看到 heap_pointer 指针通过 malloc 申请到的地址,已经指向了目标 RAM 范围内了。

注意,这里我们在 0x20001000 开始的位置申请了 10 个字节的空间,理论上heap_pointer 应当从 0x20001000 开始计算,但是由于 malloc 在申请的地址时,会占用 8个字节用来存储状态等信息,所以 heap_pointer 指针从 0x20001008 开始。这是STM32CubeIDE 使用了 newlib 库来实现 malloc 的机制所致,不影响用户的使用。

来源:STM32单片机

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1368

    浏览量

    114640
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355727
  • 串口
    +关注

    关注

    14

    文章

    1551

    浏览量

    76421
  • 指针
    +关注

    关注

    1

    文章

    480

    浏览量

    70551
收藏 人收藏

    评论

    相关推荐

    STM32CubeIDE入门教程 STM32CubeIDE安装使用教程

    STM32CubeIDE是一个高级C / C ++开发平台,具有用于STM32微控制器和微处理器的外设配置,代码生成,代码编译和调试功能。它基于Eclipse® / CDT框架和GCC工具链进行开发,并基于GDB进行调试。它允许
    的头像 发表于 06-08 09:19 9190次阅读
    <b class='flag-5'>STM32CubeIDE</b>入门教程 <b class='flag-5'>STM32CubeIDE</b>安装使用教程

    STM32CubeIDE软件实现STM32外部中断实例

    本文用STM32CubeIDE软件实现STM32外部中断实例。
    的头像 发表于 08-24 09:09 4354次阅读

    STM32CubeIDE SWV功能介绍

    01 引言 STM32CubeIDE是ST官方推出的集成开发环境,集成了很多STM32的调试与开发工具。本文主要介绍如何使用SWV功能来打印输出。 02 问题描述 客户使用STM32CubeIDE
    的头像 发表于 10-13 14:20 3757次阅读
    <b class='flag-5'>STM32CubeIDE</b> SWV功能介绍

    Ubuntu 18.04 安装 STM32CubeIDE 小记

    Ubuntu 18.04 安装 STM32CubeIDE 小记
    发表于 11-18 17:36 9次下载
    Ubuntu 18.04 安装 <b class='flag-5'>STM32CubeIDE</b> 小记

    STM32CubeIDE使用

    参考STM32CubeIDE属于一站式工具,本文带你体验它的强大第一个STM32CubeIDE项目STM32CubeIDE使用记录STM32CubeIDE使用笔记(03):使用ST-L
    发表于 12-02 17:21 29次下载
    <b class='flag-5'>STM32CubeIDE</b>使用

    STM32CubeIDE初识

    STM32CubeIDE初识
    发表于 12-02 18:36 23次下载
    <b class='flag-5'>STM32CubeIDE</b>初识

    STM32CubeIDE安装-NSIS Error问题

    STM32CubeIDE安装-NSIS Error问题
    发表于 12-03 21:06 18次下载
    <b class='flag-5'>STM32CubeIDE</b>安装-NSIS Error问题

    STM32CubeIDE的MCU开发

    以前做stm32嵌入式开发均使用的是破解版的keil软件,现在工作需要无法按照此步骤进行,最近针对ST官方免费软件STM32CubeIDE进行了相关调研工作。1 STM32CubeIDE简介目前主流
    发表于 12-05 12:21 25次下载
    <b class='flag-5'>STM32CubeIDE</b>的MCU开发

    STM32CubeIDE生成的工程

    近日接到一客户需求,其欲在 STM32CubeIDE 中指定堆(Heap)的地址到某一专用的RAM 中。
    的头像 发表于 07-27 09:40 1765次阅读

    STM32CUBEIDE(1)----安装

    概述 STM32CubeIDE是一体式多操作系统开发工具,是STM32Cube软件生态系统的一部分。 STM32CubeIDE是一种高级C/C++开发平台,具有STM32微控制器和微处
    的头像 发表于 11-22 09:52 1282次阅读
    <b class='flag-5'>STM32CUBEIDE</b>(1)----安装

    STM32CubeIDE安装指南

    电子发烧友网站提供《STM32CubeIDE安装指南.pdf》资料免费下载
    发表于 08-01 15:44 6次下载
    <b class='flag-5'>STM32CubeIDE</b>安装指南

    巧用 STM32CubeIDE 编译警告

    巧用 STM32CubeIDE 编译警告
    的头像 发表于 10-25 16:33 997次阅读
    巧用 <b class='flag-5'>STM32CubeIDE</b> <b class='flag-5'>之</b>编译警告

    STM32CubeIDE实用技巧仿真带外扩FLASH的工程

    电子发烧友网站提供《STM32CubeIDE实用技巧仿真带外扩FLASH的工程.pdf》资料免费下载
    发表于 09-19 16:55 7次下载
    <b class='flag-5'>STM32CubeIDE</b><b class='flag-5'>实用技巧</b><b class='flag-5'>之</b>仿真带外扩FLASH的工程

    STM32CubeIDE实用技巧配置空间

    电子发烧友网站提供《STM32CubeIDE实用技巧配置空间.pdf》资料免费下载
    发表于 09-19 15:07 8次下载
    <b class='flag-5'>STM32CubeIDE</b><b class='flag-5'>实用技巧</b><b class='flag-5'>之</b><b class='flag-5'>配置</b>堆<b class='flag-5'>空间</b>

    STM32CubeIDE实用技巧ld链接文件

    电子发烧友网站提供《STM32CubeIDE实用技巧ld链接文件.pdf》资料免费下载
    发表于 09-20 10:31 2次下载
    <b class='flag-5'>STM32CubeIDE</b><b class='flag-5'>实用技巧</b><b class='flag-5'>之</b>ld链接文件