头像-312782

欣欣向阳

个人成就

获得 1 次赞

帮助过1人

STM32中的CODE区是什么作用呢?

STM32的ROM被划分为三个部分:RO-data区,RW-data区(初始化为非0的全局变量),Code区;RO-data是只读数据:常量就是属于该区的,RW-data是初始化为非0的全局变量,在程序运行的时候,这块数据就会拷贝到RAM里面的静态区的数据段里面,Code是编译出来的机器指令。由于STM32的ROM是NorFlash,因此CPU可以直接读取ROM的Code(机器指令)直接执行。所以一般情况下,单片机不需要像Linux那样将Flash中的数据拷贝进入内存,而是直接就运行在ROM上。当发生了函数调用的时候,栈区就会被使用到;当使用到了全局变量或者static局部变量以后,静态区的数据就会被访问到;当使用malloc动态分配了内存的时候,堆区的内存空间就会被使用到。