打印

请教高手

[复制链接]
1663|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
公虫子|  楼主 | 2008-8-13 17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ioport   unsigned portFFFF; 
这是2407寄存器定义中的一条C语言代码,我理解的是端口定义.端口上限为portFFFF,范围为port0~~~~~portFFFF.
 
volatile ioport u16 port1003;
#define UART_LCR_REG port1003

CMD命令为:
PAGE 2:IO_EX :ORIGIN=0000h , LENGTH=0FFF0h 

port1003=0x80; 
这是一个端口的应用,但是我不明白 port1003 是什么 ??

硬件环境是一个实验箱,2407与一个xilinx的CPLD连接  ,有一份 不算正确的电路图,没有CPLD的源程序.我想弄明白 上面的端口定义需要做些什么工作??希望高手指点!!

相关帖子

沙发
公虫子|  楼主 | 2008-8-15 11:06 | 只看该作者

没人理我!!!

使用特权

评论回复
板凳
职场新鲜人| | 2012-5-21 09:06 | 只看该作者
我也想知道呀,高手请亮剑!

使用特权

评论回复
地板
五谷道场| | 2012-5-21 16:21 | 只看该作者
#define WSGR portFFFF这句话,就是定义WSGR为一个宏,凡是遇到WSGR都替换为portFFFF
portFFFF应该是一个特殊的io port变量,这个端口的地址为FFFF

使用特权

评论回复
5
五谷道场| | 2012-5-21 16:27 | 只看该作者
1.ioport关键字可以用在数组、结构、联合以及枚举类型当中。
2. 当用在数组中时,ioport限制的数组单元而非数组类型本身;
3.  ioport类型只能用来声明全局或静态变量,如果在本地变量中使用ioport类型,则变量必须用指针声明。

使用特权

评论回复
6
五谷道场| | 2012-5-21 16:34 | 只看该作者
读写I/O空间的功能是TMS320C2000 C编译器对标准C的扩展,是利用关键字ioport(I/O端口)来实现的。
该关键字的用法为:
ioport t ype porthexnum;
• ioport指示这是定义一个端口变量的关键字。
• type(类型)必须是char(字符)、short(短整
型)、int(整型)或对应的无符号类型。
• porthexnum为定义的端口变量,其格式必须是“ port” 后面跟一个16进制数,如“ port000A” 是定义访问I/O空间地址0Ah的变量。所有I/O端口的定义必须在文件级完成,不支持在函数级声明的I/O端口变量。利用ioport关键字定义的I/O端口变量可以象一般变量一样进行赋值操作:
ioport u nsinged port10; /*访问I/O空间10h的变
量*/
{
...
port10 = a;    /*将a写到端口10h*/
...
b = port10; /*从端口10h读入b*/
...
}
端口变量的使用不仅限于赋值操作,事实上,用ioport关键字定义的I/O端口变量可以象其它变量一样用在表达式中:
a = port10 + b; /*读端口10h,加上b,结果赋给a*/
port10 += a;/*读端口10h,加上a,结果写回到端口10h*/
在进行函数调用的时候,可以做I/O端口变量的值传递,而不是引用:
call (port10);/*读端口10h,将其值传递给函数调用*/
call (&port10); /*引用传递无效!*/

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝