这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教新唐单片机N76E003内存空间不足的问题

共4条 1/1 1 跳转至

请教新唐单片机N76E003内存空间不足的问题

工程师
2020-12-15 22:26:47     打赏

今天编译程序发现一个奇怪的问题,怎么使用中内存单元只有不到130个字节?


具体如下:

程序定义如下:#define        RECEIVE_BUFFER_SIZE 13
UINT8  Uart_Receive_Buffer[RECEIVE_BUFFER_SIZE];

编译OK的如下:
Program Size: data=129.0 xdata=0 code=1776
creating hex file from ".\Output\ALLL_LCD"...
".\Output\ALLL_LCD" - 0 Error(s), 0 Warning(s).


但数组仅增加一个字节就报溢出了,是什么问题?不是有256个内存单元吗?
#define        RECEIVE_BUFFER_SIZE 13
UINT8  Uart_Receive_Buffer[RECEIVE_BUFFER_SIZE];

编译错误的如下:
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA   
    SEGMENT: ?DT?_TIMER3_DELAY10US?DELAY
    LENGTH:  0004H
Program Size: data=130.0 xdata=0 code=1776
Target not created




关键词: N76E003     内存     RAM     SRAM    

工程师
2020-12-15 22:52:17     打赏
2楼

你的xdata都还没用到,768字节,先把默认内存放到xdata,如下图配置

然后,如果你想用前面的256字节片内,定义的时候加idata,像这样    UINT8 idata UART0RcvValidData[128];


工程师
2020-12-15 22:55:26     打赏
3楼

data=128,idata=256

char idata xxxx...



工程师
2020-12-15 23:02:53     打赏
4楼

如果RAM多呢,还有768吧记得扩展内存空间呢。通过idata  给变量定义到内部扩展寄存器,指令有部分限制,速度基本上差不多。
通过给变量定义xdata  可以直接把内存设置到芯片内部的外接内存,因为是通过间接地址访问,所以效率上面稍稍有点影响,但那些不常用的变量,设置到这里,是完全不影响机器运行效率的。
xdata关键词,不支持bit类型变量,避开这个就可以了。  


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]