【怎么在KEIL中自定义STM32的栈顶地址】 |
您所在的位置:网站首页 › keil例程如何改地址 › 【怎么在KEIL中自定义STM32的栈顶地址】 |
STM32的启动文件中定义的栈和堆的大小,由于栈是向下生长的。所以我们一般希望将栈顶设置为RAM的最高有效地址。这样就可以最大限度保护栈不会溢出。但是STM32的启动文件居然不是这样的思路。 那STM32的启动文件的分配思路是怎么样的呢。它其实是先确定用户使用RAM的情况,然后在未使用的RAM地址开始分配一段RAM区域来做为栈使用。也就是说它并不是将栈顶设置在RAM地址的最高分缘处。这样其实有大部分RAM被浪费掉,随着用户程序的复杂度加大,有可能会引启栈溢出的风险。 现在我们来自定义栈顶地址,修改启动文件: 可复制以下代码,其中ARM.__AT_0x2001FC00指定了栈区域的启始地址,并不是栈顶地址: Stack_Size EQU 0x00000400 ADDR_STACK_TOP EQU 0x20020000 ; 0x2001FC00 = ADDR_STACK_TOP - Stack_Size AREA |.ARM.__AT_0x2001FC00|, DATA, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp 参考博文:www.zhangshilong.cn/work/46137.html |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |