打印

求助!!!44box存储空间的使用

[复制链接]
1936|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xcy8011|  楼主 | 2007-5-24 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想使用nCS4的空间,即从0x08000000到0x0a000000这部分空间,数据为16位
做了如下初始化:rPCONB=0x7Cf。
我发送数据的子程序如下:
void data_out(int set_db)
{    
    unsigned int *LCDADD;
    LCDADD = (unsigned int*)0x080000ff;
    LCD_RS_H;    
    *LCDADD = set_db;
}
问题如下:
1,用以上设置在ads上可以编译通过,但在axd没办法运行下去。
2,如果发送数据的子程序改为如下:
void data_out(int set_db)
{    
    unsigned char *LCDADD;
    LCDADD = (unsigned char*)0x080000ff;
    LCD_RS_H;    
    *LCDADD = set_db;
}
编译通过并可以在axd运行,但是只能送16位数据的低八位。
请问这是什么原因?怎样解决呢?

相关帖子

沙发
djyos| | 2007-5-24 17:40 | 只看该作者

数据对齐问题

    访问16位数据时,需要偶对齐地址,访问int型数据时,需要4字节对齐地址,否则将产生data abort异常,这就是你上一个函数不能运行的原因。
    对于下一个函数,char型数据可以使用任意地址,所以能运行,但80000ff不是一个合法的16位地址,当然只能送8位数据了。

使用特权

评论回复
板凳
xcy8011|  楼主 | 2007-5-26 18:33 | 只看该作者

谢谢指点

谢谢指点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

24

帖子

0

粉丝