Program Size: Code=28784 RO-data=6480 RW-data=60 ZI-data=3900 的含义
1. Code: 程序所占用的FLASH大小,存储在FLASH.
2. RO-data: Read-only-data,程序定义的常量,存储在FLASH中。
3. RW-data:Read-write-data,已经被初始化的变量,存储在SRAM中。
4. ZI-data:Zero-Init-data,未被初始化的变量,存储在SRAM中。
简单的说就是在烧写的时候是FLASH中的被占用的空间为:
ROM(Flash) size = Code+RO-data+RW-data;
上面代码大小 = 28784 + 6480 + 60 = 35324
= 35324/1024 = 34.5K
程序运行的时候,芯片内部RAM使用的空间为:
RAM size = RW-data+ZI-data
上面代码RAM = 60 + 3900 = 3960
= 3960/1024 = 3.9K
从上面的分析之后我们得到了此程序占用的内存
ROM = 34.5K
RAM = 3.9K
然后我们从百度百科搜索得STM32C8T6的
ROM容量:64KB (64K x 8)
RAM容量:20K x 8
以下是STM32系列大中小型容量的大小和地址范围,假如我们使用内部flash的话就必须要查看地址的大小了,在下一篇中我们将说明如何使用STM32内部flash
关键字:STM32 keil编译 内存大小
引用地址:
STM32之_keil编译内存大小解析
推荐阅读最新更新时间:2024-03-16 16:14
stm32专题十一:USART(五)USART发送命令解析
通过串口,用电脑发数据给单片机来控制单片机实现相应的功能,能够实现简单的人机交互。 很简单,通过getchar()接收,然后switch...case...来实现不同的功能。值得注意的是,串口发送接收的均为字符。 #include stm32f10x.h #include bsp_led.h #include bsp_usart.h #include stdio.h void delay(uint32_t count); int main(void) { uint8_t ch; USART_config(); LED_GPIO_Config(); printf( 串口发送数据
[单片机]
STM32 多路软定时器
不记得哪里听过这句话:一个产品的50%的代码用于实现功能,另外50%则用与于容错。可见容错的重要性。容错的方法有很多,其中超时机制是最常用的方法之一。超时机制,故名思议,需要使用到定时器,用定时器来产生定时节拍,然后检测对象是否在规定的时间内正常完成操作。当存在多个需要监控的对象时,如果只使用一个定时器来监控多个对象,则定时机制会产生紊乱;但如果使用多个定时器分别监控一个对象,则会导外设资源浪费或者匮乏。这个问题的解决方法是:用一个定时器外设,在它的基础上实现多路软定时器。这样的话,实际只是用了一个定时器外设,却可以获得多个定时器功能。 下面就来讲讲如何使用一个定时器外设来实现多路软定时器。还是基于我自己规范工程。 1、工程的修
[单片机]
STM32应用简章之外部中断
①初始化IO口为输入。 GPIO_Init(); ② 开启IO口复用时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); ③设置IO口与中断线的映射关系。 void GPIO_EXTILineConfig(); ④初始化线上中断,设置触发条件等。 EXTI_Init(); ⑤配置中断分组(NVIC),并使能中断。 NVIC_Init(); ⑥ 编写中断服务函数。 EXTIx_IRQHandler(); ⑦清除中断标志位 EXTI_ClearITPendingBit();
[单片机]
STM32的GPIO中断例子
前言:目前开发一个测距仪数据汇总显示仪表,从17年2月开始学习硬件,本家是软件,1个月画原理图,半个月画PCB板,中间花了2个月时间用JAVA开发中级版蓝牙APP,板子焊好后开始学习STM32各个功能,点亮LED灯,花了半个月显示LCD彩屏,模拟SPI,USART通讯,按键,这次是中断NVIC。 说明:我写的不是为了教大家学会中断,我是从 http://www.stmcu.org/module/forum/thread-603652-1-1.html 例子中学会的,大家可以去那里学,以下只是我把我的DEMO贴出来,防忘,本人菜鸟,只会实现不会理解,有什么错误也可以指出。实现两个按钮,按一个蜂鸣器一直响,按另一个关闭 正文: ---
[单片机]
STM32 串口通讯 发送 接收
STM32的使用有利有弊,种类多---但是种类有太多,资料也是比较乱的,还有就是库的调用,经常忘记一些函数的使用------比如最常用的串口------ ------------------------------------------------------------------------------USART ----设置------------------------------- void USART1_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;
[单片机]
嵌入式-stm32学习:位带操作
// GPIO 位操作 #include stm32f4xx.h // 这里只定义了GPIO ODR和IDR这两个寄存器的位带别名区地址,其他寄存器没有定义 //SRAM 位带区: 0X2000 0000~0X200F 0000 //SRAM 位带别名区: 0X2200 0000~0X23FF FFFF //外设位带区: 0X4000 0000~0X400F FFFF //外设位带别名区: 0X4200 0000~0X43FF FFFF // 把“位带地址+位序号”转换成别名地址的宏 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000
[单片机]
STM32学习第一课:STM32 编程的C语言基础
刚开始看STM32的库函数,会有很多疑惑,例如指针怎么用,结构体跟指针怎么配合,例如函数的参数有什么要求,如何实时更新IO口的数据等。如果重新进行C语言的学习,那么要学很久才能够系统地认识。这里将比较容易想不起来的知识点进行简单的整理。 1、#ifdef 和 #ifndef #ifdef 标识符A// 如果标识符A定义了,就编译程序段1,否则编译程序段2 程序段1 #else 程序段2 #endif #ifndef 的功能则与 #ifdef相反,是没有定义标识符A的时候编译程序段1。 2、全局define 在软件的选项中,有如此一栏,在上面填写的变量则表示在所有的文件中,上述的标识均被定义过。 #ifdef
[单片机]
基于STM32配置1602程序
标 注:用到了 PD_0—7,给PO口(单片机板液晶数据口),PA0_2; 已在函数中将他们以寄存器形式配置,注踏出再次配置PD时 不应在配置这些口; 在主函数中需将PD,PA使能。 头函数:#include"1602.h" 函 数:在1602.h中有列举; 返回值:无; 用PD0_7给液晶数据,PA0_2位控制为依次rs,rw,en; #ifndef __1602_H #define __1602_H #include "stm32f10x.h" void write1602_com(u8 com); void write1602_dat(u8 dat); void lcd1602_init(void)
[单片机]