Tob*_*oby 4 c embedded microcontroller 8051
在XC888微控制器上编程,我想为外部存储器中的某些数据保存缓冲区xdata
.
我这样做(只是一个例子,我摆脱了不必要的代码):
Header.h
extern ubyte xdata rec_buffer[32];
Run Code Online (Sandbox Code Playgroud)
Function.c
ubyte xdata rec_buffer[32] = {0};
void foo()
{
//Option 1
rec_buffer[0] = 0xFF; // Doesn't work
//Option 2
ubyte xdata *ptr_buf = rec_buffer;
ptr_buf[0] = 0xFF // Doesn't work
}
Run Code Online (Sandbox Code Playgroud)
所以我无法弄清楚我在这里缺少什么.在这两种情况下,都没有数据写入缓冲区.(使用调试器检查).我还检查了指针指向它的地址 - >它实际上指向外部存储器(地址0x000000
,但应该没有任何问题).
当我这样做而没有定义缓冲区时,xdata
它的工作完全正常.我究竟做错了什么?有什么特别的方法我必须写入xdata吗?
XRAM 0xF000
不应该(不0x000000
)?根据图7这里:
http://www.keil.com/dd/docs/datashts/infineon/xc88xclm_ds.pdf
链接器配置是否在某处错误?
归档时间: |
|
查看次数: |
438 次 |
最近记录: |