RSS

NIOS中操作硬件

来源:网络 作者:匿名 时间:2007-01-06 Tag: 点击:

NIOS II 中硬件很隐蔽,操作好象是用库里生成的函数,直接操作不方便,摸索了很长时间,前两天看一本书,是说SDK的时候,每组相关硬件的寄存器地址是连续的,上面给出了结构体来对应硬件寄存器组的方法,这点很像以前看过的一个2812的工程的处理方法,可以写一个结构体,然后再声明硬件名为这个结构体型的指针就可以直接对这个寄存器组操作了,访问哪个寄存器,可以通过->进行,若其中有某些寄存器是需要位操作的,可以再做一个位的结构体,然后做一个公用体,把这个位结构体和一个int型放在一起,然后就把这个需要位操作的寄存器声明为该公用体型即可。

比如

#include "system.h"
typedef struct
{
 int bit0 : 1;
 int bit1 : 1;
 int bit2 : 1;
 int bit3 : 1;
 int bit4 : 1;
 int bit5 : 1;
 int bit6 : 1;
 int bit7 : 1;
 int bit8 : 1;
 int bit9 : 1;
 int bit10 : 1;
 int bit11 : 1;
 int bit12 : 1;
 int bit13 : 1;
 int bit14 : 1;
 int bit15 : 1;
}ST_bit;

typedef union
{
 ST_bit bit;
 int port;
}UN_port;

typedef struct
{
 UN_port data;
 int direction;
 ...
 ...
 ...
}ST_pio;

#define pio0  ((volatile ST_pio *)P0_BASE)
#define P0  pio0->data.port
#define P0_Dir  pio0->direction
#define P0_0  pio0->data.bit.bit0
...
...
...

串口操作试着用这种方法做了一下,很方便。


1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载