Keil |
您所在的位置:网站首页 › keil用的是什么编译器 › Keil |
有时我们会遇到这样的报错:
*** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: _DATA_GROUP_ LENGTH: 002CH Program Size: data=117.0 xdata=0 code=6242 Target not created. Build Time Elapsed: 00:00:00 报错截图如下: 这类报错是提醒 我们定义了过多的变量:我们一般使用Small来存储变量, 就是说单片机优先把变量存储在内部ram里,如果内部ram不够了, 就会报错,所以我们编译的时候就要选取外部RAM了。 我们点开魔棒寻找解决方案:发现将memory mode改成Compact :variables inPDATA 在编译, 就不报错,通过编译了~~~ 那这个memory mode究竟是什么呢?Small:变量存储在内部ram里; small模式下,再入函数的堆栈是设在idata中的 Compact:变量存储在外部ram里,使用页8位间接寻址; compact模式下,再入函数堆栈是设在pdata中的 Large:变量存储在外部Ram里,使用16位间接寻址; 可见,compact和large必须有外部RAM支持。 使用Small的模式: 并不是说变量就不可以存储在外部, 只是你要指定存储在外部,,比如: unsigned char xdata a; 变量a存储在外部的ram。 unsigned char a; 变量默认存储在内部ram。使用Large的模式: unsigned char xdata a; 变量a存储在外部的ram。 unsigned char a; 变量默认存储在外部ram。 以上就是说这三个选项其实只是影响, 当没有特别指定变量的存储空间的时候, 默认变量存储在哪里,比如上面的变量定义unsigned char a。 如果在变量声明时未声明变量的存储器类型, 则该变量的存储器类型,由程序的存储模式来决定: 小模式(small model): 默认data区 紧凑模式(compact model):默认pdata区 大模式(large model): 默认xdata区 相关蓝桥杯板载资源列举:1.IAP15f2k60S2含义: IAP15:单片机型号 F:单片机工作电压5.5V-4.2V 2k: 2048字节的SRAM、最大主频35MH 60: 60KB flash/ROM程序存储器 S2: 含有2个串口 KB=k 2^10Byte=1024Byte=1KB 1KB字节=1024Byte=1024*8bit 波特率bit/s 2、硬件信息: CPU:8位 3个16位定时器 T0(P34)、T1(P35)、T2(P30) 8通道10位ADC(3路PWM可做3路DA转换、不具备独立的DA转换) IO口最大位数42 SP1总线:MOSI表示主机输出从机输入(SPI在温度模块,高速串行通信接口) 外部中断2的中断号8 SP1中断号9 IO口四种工作模式 7种复位方式 7种寻址方式 外部存储器16地址总线、8位数据总线 P2高8位地址、P0低8位地址和8位数据总线。4. 存储器分类: data: 直接寻址的片内RAM bdata:位寻址片内RAM idata: 间接寻址片内RAM区 pdata:间接访问的片外RAM的低256B xdata:间接访问用DPTR的片外RAM, code: 程序存储区ROM 5.RAM分类: 易失存储器(掉电) RAM:随机存储器 SRAM: static RAM 静态存储器,(不需要刷新) DRAM:Dynamic RAM 动态存储器(需要刷新) DDRAM 双倍速率同步 非易失存储器(掉电) ROM 自读存储器 PROM 擦除一次 EPROM 擦除1000次 EEPROM电子可擦除 flash、norflash
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |