MyFPGA Forum

 找回密码
 注册
搜索
查看: 6292|回复: 4
打印 上一主题 下一主题

求教,PIO的使用。

[复制链接]
跳转到指定楼层
1#
发表于 2010-5-19 23:46:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LED显示问题:

将 i 送到LED上显示,  下面第一个可以,但第二个就不行,为什么?

IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, i);
  
*(volatile unsigned int *)LED_BASE = i;
2#
发表于 2010-5-20 10:52:49 | 只看该作者
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, i); 等同于
IOWR(LED_BASE,0,i);   //#incldue "io.h"   同时参考PIO Core
而IOWR定义如下:
#define IOWR(BASE, REGNUM, DATA) \
  __builtin_stwio (__IO_CALC_ADDRESS_NATIVE ((BASE), (REGNUM)), (DATA))
3#
 楼主| 发表于 2010-5-20 16:35:50 | 只看该作者
这个我知道,我是想直接访问端口寄存器,为什么不行?
4#
发表于 2010-7-1 11:13:11 | 只看该作者
LED_BASE的指向不对啊,所以错误
5#
发表于 2010-7-1 11:19:26 | 只看该作者
LED_BASE地址的值,包含了方向寄存器PIO_DIRECTION,中断寄存器PIO_IRQ_MASK以及边沿俘获寄存器。不同的指令对不同的寄存器进行操作,你直接对LED_BASE赋值,计算机不知道你是访问的哪个寄存器,或者你直接赋值把其它寄存器的值给改变了,这样当然不会成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-5-3 13:11 , Processed in 0.033635 second(s), 15 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表