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
...
...
...
串口操作试着用这种方法做了一下,很方便。
用户388852 2007-8-11 20:38
雪中送炭
用户185799 2007-7-25 21:47
谢谢!正在学习nios~
用户1208903 2006-9-21 16:58
用户1053025 2006-9-12 09:00