在C51里绝对地址访问可以 a=XBYTE[0x00aa],在ARM里如何实现。

[复制链接]
4240|14
 楼主| xuyaqi 发表于 2009-1-19 21:59 | 显示全部楼层 |阅读模式
 楼主| xuyaqi 发表于 2009-1-22 20:34 | 显示全部楼层

开发板原理图

  <br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20091/2009122203035311.pdf'>https://bbs.21ic.com/upfiles/img/20091/2009122203035311.pdf</a>
computer00 发表于 2009-1-19 22:47 | 显示全部楼层

你自己找到XBYTE的定义就明白了...就是一个指针而已

  
 楼主| xuyaqi 发表于 2009-1-19 23:25 | 显示全部楼层

为什么在MDK ARM中编译通不过?程序如下:

#include&nbsp;&ltLPC23xx.H&gt<br /><br />#define&nbsp;RAMADDR&nbsp;&nbsp;0x80000000&nbsp;&nbsp;;&nbsp;&nbsp;//外部RAM的基址。<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;&nbsp;unsigned&nbsp;int<br />#define&nbsp;ulong&nbsp;unsigned&nbsp;long<br /><br /><br />void&nbsp;ExternRam(void)<br />{<br />&nbsp;volatile&nbsp;uint&nbsp;*buf;//<br />&nbsp;uint&nbsp;data[512];<br />&nbsp;uint&nbsp;i;<br />&nbsp;<br />&nbsp;for&nbsp;(i=0x00;i&lt512;)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf=(volatile&nbsp;uint&nbsp;*)&nbsp;(RAMADDR&nbsp;|&nbsp;i&lt&lt1);//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*buf=i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;}<br />}<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;ExternRam();<br />&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />}
阿南 发表于 2009-1-19 23:50 | 显示全部楼层

看看错误信息

  
奇门遁甲 发表于 2009-1-20 01:06 | 显示全部楼层

re

#define&nbsp;RAMADDR&nbsp;&nbsp;0x80000000&nbsp;&nbsp;;<br />后面不应该有“;”的
 楼主| xuyaqi 发表于 2009-1-20 08:39 | 显示全部楼层

感谢大家的帮助,问题已解决,uint应该unint

  
computer00 发表于 2009-1-20 09:51 | 显示全部楼层

也可以不借助中间变量,直接强制转换后就操作它

for&nbsp;(i=0x00;i&lt512;i++)<br />{<br />&nbsp;((volatile&nbsp;uint&nbsp;*)(RAMADDR))=i;<br />}<br /><br />也可以像keil那样定义一个宏。
古道热肠 发表于 2009-1-20 16:34 | 显示全部楼层

尽量用厂家提供的底层硬件操作函数

用inline《内联》功能,不影响效率,直接操作底层,让人理解费劲,要看数据手册。
 楼主| xuyaqi 发表于 2009-1-20 21:43 | 显示全部楼层

最终在LPC2378外挂8位SRAM开发板调试成功的程序

/*<br />LPC2378开发板&nbsp;外加8位SRAM_IS63LV1024演示程序<br /><br />作者:xuyaqi@169cnc.com<br />*/<br /><br />#include&nbsp;&ltLPC23xx.H&gt<br /><br />#define&nbsp;RAMADDR&nbsp;&nbsp;0x80000000&nbsp;&nbsp;&nbsp;&nbsp;//外部RAM的基址。<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;unchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;unint&nbsp;&nbsp;unsigned&nbsp;int<br /><br /><br />void&nbsp;ExternRam(void)<br />{<br />&nbsp;unchar&nbsp;data[256];<br />&nbsp;unint&nbsp;i;<br />&nbsp;unchar&nbsp;rr;<br /><br />for&nbsp;(i=0x00;i&lt256;)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;((volatile&nbsp;unchar&nbsp;*)(RAMADDR))=i;<br />&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;<br />&nbsp;for&nbsp;(i=0x00;i&lt256;)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data=((volatile&nbsp;unchar*)(RAMADDR));//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;rr=data[1];<br />&nbsp;&nbsp;rr=rr;<br />}<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;//init_port();//IO初始化<br /><br />&nbsp;&nbsp;ExternRam();//外SRAM读写<br /><br />&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />}
古道热肠 发表于 2009-1-21 11:32 | 显示全部楼层

哈哈,解决问题就好,楼主能否弄个原理图或照片看看.

  
 楼主| xuyaqi 发表于 2009-1-22 20:27 | 显示全部楼层

看截图与照片

 楼主| xuyaqi 发表于 2009-1-22 20:29 | 显示全部楼层

再发照片

 楼主| xuyaqi 发表于 2009-1-22 20:45 | 显示全部楼层

背面存贮芯片

古道热肠 发表于 2009-2-1 11:40 | 显示全部楼层

好,谢谢共享原理图及效果图

值得嘉奖.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

1639

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部