STM32 zi_data大于ram空间值,程序为啥能正常运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 zi_data大于ram空间值,程序为啥能正常运行相关的知识,希望对你有一定的参考价值。

Program Size: Code=50342 RO-data=4222 RW-data=700 ZI-data=272588
这个是“实验55 UCOSII实验3-消息队列、信号量集和软件定时器”编译后的结果,
可以看出zi_data的值远远大于64的ram最大值,为什么程序还能正常运行,没有影响吗?

没有问题, 编译的时候keil选用了优化。这个zi-data可能库,或者是你的字库或者点阵,如果程序中确实没用到,优化的时候不会编译进hex文件,你要看生成的hex文件大小。 参考技术A 子函数中的局部变量只有在函数被调用时才会创建,子函数不会被同时全部调用,所以没有超过RAM。估算下最多会有多少子函数同时被调用,就可以计算出实际使用的最大RAM。 参考技术B 有可能用了外扩的SRAM;或者在程序运行的过程中没有使用到被分配到外扩SRAM里的变量,那么即使没有外扩的SRAM芯片,程序依然能正常运行 参考技术C 因为外扩了SDRAM

stm32 上电复位 和软复位有啥区别.该如何解决

参考技术A 上电复位RAM及寄存器的值设置为默认值。而软复位,则是在不掉电的情况下,使程序指针直接跳转至复位值,RAM及寄存器无法保证上电的默认值。 参考技术B 要解决什么问题

以上是关于STM32 zi_data大于ram空间值,程序为啥能正常运行的主要内容,如果未能解决你的问题,请参考以下文章

stm32 软件复位和上电复位的区别

stm32 上电复位 和软复位有啥区别.该如何解决

stm32 上电复位 和软复位有啥区别.该如何解决

我看ram还有10k,为啥keil提示stm32内存空间不足

Keil/MDK:查看STM32的RAM和ROM使用情况

用 C 语言 (STM32F4) 估计剩余的可用 RAM