1、Code
即代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。
2、RO-data
Read Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。
例如:
C语言中const关键字定义的变量就是典型的RO-data。
3、RW-data
Read Write data,即可读写数据域,它指初始化为“非0值”的可读写数据,程序刚运行时,这些数据具有非0的初始值,且运行的时候它们会常驻在RAM区,因而应用程序可以修改其内容。
例如:
C语言中使用定义的全局变量,且定义时赋予“非0值”给该变量进行初始化。
4、ZI-data
Zero Initialie data,即0初始化数据,它指初始化为“0值”的可读写数据域,它与RW-data的区别是程序刚运行时这些数据初始值全都为0,而后续运行过程与RW-data的性质一样,它们也常驻在RAM区,因而应用程序可以更改其内容。
例如:
C语言中使用定义的全局变量,且定义时赋予“0值”给该变量进行初始化.。
若定义该变量时没有赋予初始值,编译器会把它当ZI-data来对待,初始化为0。
ZI-data的栈空间(Stack)及堆空间(Heap):
在C语言中,函数内部定义的局部变量属于栈空间,进入函数的时候从向栈空间申请内存给局部变量,退出时释放局部变量,归还内存空间。
而使用malloc动态分配的变量属于堆空间。在程序中的栈空间和堆空间都是属于ZI-data区域的,这些空间都会被初始值化为0值。
编译器给出的ZI-data占用的空间值中包含了堆栈的大小(经实际测试,若程序中完全没有使用malloc动态申请堆空间,编译器会优化,不把堆空间计算在内)。
关键字:STM32 编译结果
引用地址:
STM32 编译结果 map 之 code、RO-data、RW-data、ZI-data 字段解析
推荐阅读最新更新时间:2024-03-16 16:26
STM32系列又添新成员,性价比之王G0诞生
意法半导体(简称:ST)布局物联网的速度可以说是马不停蹄。今年10月,为了巩固无线市场的布局,ST发布了STM32系列的第12个新成员—STM32WB,加强了STM32在物联网市场的影响力。时隔2个月,ST再一次发布了全新产品,为市场带来了主流型STM32 MCU家族的新成员、在STM32F0系列成功基础上的升级产品——STM32G0。 此次产品发布会是由来自ST微控制器部产品线市场经理Pierre Charvet。Pierre有着丰富的工作经验,他在ST的21个年头里不仅成功地推出了STM8A系列汽车MCU而且做出畅销海外的STM32F0系列。他这次详细介绍了STM32G0的三大亮点——高效、稳健、简单。 让客户
[单片机]
基于STM32的全彩LED显示屏系统的设计
LED显示屏是利用LED点阵模块或像素单元组成的一种现代平面显示屏幕,具有发光效率高、使用寿命长、视角范围大、色彩丰富以及对室内外环境适应能力强等优点。20世纪80年代后期,它在全世界迅速发展起来,并很快成为大屏幕平板显示的代表性主流产品;近年来,随着蓝色LED产品价格的快速下降,全彩色LED显示屏的价格逐步降低,市场需求急剧增长,应用日益普遍。目前的LED显示屏控制系统多采用ARM处理器来完成整个系统的功能,这种控制系统在数据处理速度上存在很大的局限,影响显示效果的连续性。基于此,在分析了STM32微处理器总线结构特点的基础上,提出了STM32+FPGA的控制系统方案,该方案充分了利用STM32微处理器的灵活的储器控制技术和
[电源管理]
max7219驱动数码管程序(51单片机+STM32 MAX7219数码管程序案例)
1、STM32 硬件SPI max7219 8位数码管显示模块 数码管模块电路图 /***************************************************************** Updated time: 12th,12,2015 Function:通过MAX7219驱动数码管 ******************************************************************/ #include “delay.h” #include “sys.h” #include “usart.h”//串口通信 #define Max7219_pinCLK PAout(
[单片机]
STM32单片机编程方式及工作原理
STM32单片机编程可以使用多种不同的编程语言和工具,下面是一些常用的编程方式: C语言编程:C语言是STM32单片机编程中最常用的编程语言之一,STM32提供了官方的标准外设库和HAL库来简化编程过程。 Keil:Keil是一款集成开发环境(IDE),它可以与多种编译器和调试器一起使用,包括ARM编译器和CMSIS-DAP调试器,使得开发者可以方便地进行编程、编译和调试。 STM32CubeIDE:STM32CubeIDE是STMicroelectronics提供的官方集成开发环境,可以使用C/C++语言编程,支持多种STM32单片机系列,提供了一系列的图形化工具和代码生成器,使得开发者可以更加方便地进行开发、调试和优化。
[单片机]
STM32的SWD使用说明
SWD下载口使用说明 STM32的GPIO的默认下载口是JTAG,所以在需要在引脚上映射到SWD功能。 必须保证JTAG的部分引脚配置放置在所有GPIO配置的最后,或者是在使用那部分引脚时使用map映射函数。 /*JTAG做普通引脚时GPIO最后配置*/ void JTAG_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE
[单片机]
STM32——滴答定时器
时钟作为芯片的心脏,芯片依靠时钟维持运动的状态。 stm32的延时函数,依赖滴答定时器,独立的提供延时。 滴答定时器: 时钟是由HCLK经过8分频来作为小心脏的。假设HCLK时钟为72MHz,8分频后,滴答定时器频率为9MHz,即一个时钟周期为1/9us。 在我们使用滴答定时器进行us定时时,需要修改fac_us的值,假设设定HCLK时钟为72MHz,则fac_us应该设定为9,使delay_us()保持1us。 以下为SysTick定时器us的延时函数。 //nus为要延时的us数. void delay_us(u32 nus) { u32 temp; SysTick- LOAD=nus*fac_us; //时间加载
[单片机]
stm32专题三十八:在SRAM中调试代码
在 RAM 中调试代码的优点: 在 RAM 中调试代码的缺点: stm32的启动方式: (1)从地址 0x00000000 处取出栈指针 MSP 的初始值,该值就是栈顶的地址; (2)从地址 0x00000004 处取出程序指针 PC 的初始值,该值指向复位后应执行的第一条指令; 上述过程由内核自动设置运行环境并执行主体程序,因此它被称为自举过程。 这个实际上和启动文件是相对应的: 实际应用中,我们会根据BOOT0和BOOT1两个引脚,把这两个地址映射到其他地址空间; 对于内部FLASH和内部SRAM已经很熟悉了,系统存储器是什么? 实际上,当我们按住复位然后松开时,内核就会从映射到的地址,取出
[单片机]
剖析STM32-定时器2
4. 常用库函数 定时器参数初始化: void TIM_TimeBaseInit(TIM_TypeDef* TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct); 结构体内部成员: typedef struct { uint16_t TIM_Prescaler; uint16_t TIM_CounterMode; uint16_t TIM_Period; uint16_t TIM_ClockDivision; uint8_t TIM_RepetitionCounter; } TIM_TimeBaseInitTypeDef; 声明方式(一般
[单片机]