一、keil编译完后会产生以下数据:
其中,code代表可执行代码,程序中定义的所有函数都位于此处;
RO-data代表可读数据,程序中所有的全局常量数据和字符都位于此处;
RW-data代表已经初始化的读写数据,程序中所有定义并且初始化的全局变量和静态变量均位于此处;
ZI-data代表未初始化的读写数据,程序中定义了但是没有初始化的全局变量和静态变量位于此处;
二、在map文件的最后可以看到如下数据
从这个表里可以看到ROM SIZE里包含了Code RO-data RW-data,但是没有zi-data。是因为zi-data的值没有在程序里进行初始化,所以上电运行后会直接被赋值为0,所以这个值也就没有必要保存的ROM空间里了。
三、程序空间大小计算
7828byte=0x1E94byte;
那么数据存储从0x800 0000+0x1E94=0x800 1E94开始都是安全的。
关键字:stm32 计算编译完 数据存储 起始位置
引用地址:
stm32计算编译完的程序的大小及数据存储起始位置判断
推荐阅读最新更新时间:2024-03-16 16:19
SysTick系统时钟滴答实验(stm32中断入门)
系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难度并不高,但是理解起来还是比较复杂的,我会在本文中从实际应用出发去说明,当然最好去仔细研读宋岩翻译的 Cortex-M3权威指南 第八章,注意这不是一本教你如何编写STM32代码的工具书,而是阐述Cortex-M3内核原理的参考书,十分值得阅读。 SysTick系统时钟的核心有两个,外设初始化和Systick_Handle()中断处理函数。 Systick配置: static void SysTick_UserConfig(
[单片机]
基于STM32的智能电梯控制系统设计
电梯自动控制系统一般是基于PLC,但是在一些干扰较少,层数较少,且控制精度要求不高的情况下,使用单片机是十分适合的。虽然它在抗干扰及稳定性上比不上PLC,但是它的价格、体积及灵活性是PLC所不及的。 1、系统硬件设计 1.1、系统总体组成 如图1系统总体结构,本系统将基于ARMCortex-M3内核的STM32F103ZET6芯片作为主控芯片,连接电机控制、压力传感、液晶显示、光感检测、按键输入模块,通过程序控制组成了一个智能电梯控制系统。其中,电机控制模块用于模拟电梯门的开关和电梯的上下运动;压力传感模块用于模拟电梯门关闭时受到阻力的情况及超重警告;光感模块用于模拟电梯抵达楼层时的位置检测;液晶显示模块用于模拟电梯内部的楼层
[单片机]
基于STM32的景点语音自动导览系统的研究与设计
景点语音导览主要有以下几种方式:一种是通过定位系统(GPS)的用户终端接收工作卫星的导航信息,从而解算出车辆的经纬度信息,进而计算出实时坐标,将其与景点坐标相比较,当车辆驶入景点一定距离范围内时,不用人工干预,系统自动播报景点语音信息;另一种是对车轮轴的转角脉冲进行计数,将计数值和预置值对比,即可确定播放时刻,达到准确播放景点语音信息的目的;第三种方案是利用无线射频识别技术,在每一个景点范围内设置一个具有ID 的射频发射器,采用间歇工作方式发射信号,当旅游列车即将到达景点时,车载系统接收到射频发射器信号并解码出景点的ID 号,由系统控制自动播放对应编号的景点语音信息。由于景点自然环境的复杂性,种方式难以满足系统要求;第二种方式简单
[单片机]
STM32学习--PWM测试
今天针对通用定时器的输入捕获和PWM输出进行了学习测试,使用库函数进行。 1. PWM输出测试 1.1 测试方法 输出测试使用软件调试方法,直接在MDK调试界面的逻辑分析仪进行。软件调试设置网上一堆一堆的,我只描述一下遇到问题点。 图中,软件仿真只用设1、2项,加入硬件调需设第3项。 打开逻辑分析仪,在setup中输入想看的端口,如下图设置。 在端口号上右击,选择bit,然后运行即可看PWM输出的效果。 1.2测试的程序 ① GPIO设置,主要是时钟、复用时钟、推挽输出、由于用默认的映射所以不用GPIO_PinRemapConfig。 void PWMOut_GPIO_Init() { GP
[单片机]
Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写
前言 功能: 通过SPI读写SD卡/TF卡上的文件系统 支持FAT16, FAT32, exFAT, 即FatFs所支持的文件格式. 支持存储卡容量512MB至64GB, 更高容量未测试 实现基于 STM32CubeMX, STM32F4 v1.26.2 FatFs, R0.12C(STM32CubeMX内建版本) 大部分参考自STM32Cube配置SPI读sd卡 https://controllerstech.com/sd-card-using-spi-in-stm32/ 视频 https://www.youtube.com/watch?v=spVIZO-jbxE 项目代码 https://github.co
[单片机]
STM32使用寄存器点亮LED
前言 给有特定功能的内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。 一、什么是寄存器? 1、什么是储存器映射? 存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射。 2、什么是寄存器映射? 给存储器分配地址的过程叫存储器映射,再分配一个地址叫重映射。 二、STM32寄存器映射 1.总线基地址 2.GPIO基地址 3.GPIOB端口寄存器列表 4.GPIOx端口数据输出寄存器ODR描述 三、C语言对寄存器的封装 1.C语言对寄存器的封装 2.实现让PBO输出低/高电平 3.
[单片机]
STM32之SPI主机例程
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config(void) { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_D
[单片机]
基于STM32模拟UART串口通信
UART工作原理 UART即通用异步收发器,是一种串行通信方式。数据在传输过程中是通过一位一位地进行传输来实现通信的,串行通信方式具有传输线少,成本底等优点,缺点是速度慢。串行通信分为两种类型:同步通信方式和异步通信方式。 但一般多用异步通信方式,主要因为接受和发送的时钟是可以独立的这样有利于增加发送与接收的灵活性。异步通信是一个字符接着一个字符传输,一个字符的信息由起始位、数据位、奇偶校验位和停止位组成。 每一个字符的传输靠起始位来同步,字符的前面一位是起始位,用下降沿通知收方开始传输,紧接着起始位之后的是数据位,传输时低位在前高位在后,字符本身由5~8位数据位组成。 数据位后面是奇偶校验位,
[单片机]