原创 NIOS中操作硬件

2006-9-11 13:45 4361 11 11 分类: FPGA/CPLD

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
...
...
...


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

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户388852 2007-8-11 20:38

雪中送炭

用户185799 2007-7-25 21:47

谢谢!正在学习nios~

用户1208903 2006-9-21 16:58

very good!

用户1053025 2006-9-12 09:00

虽然我看不懂,但还是回复一下。顺便提一下,这么多人看了都不留言啊。。。
相关推荐阅读
mubo_996067292 2010-11-07 23:09
继续升级,CTE1.3
新增:rms2vpp <rms value> -- sine signal amplitude convertvpp2rms <vpp value> -- sine signa...
mubo_996067292 2010-10-23 02:10
关于天灾
    胡公,温公,世之英杰。而其享国之日,天灾频现。自胡公七年(西历二千零八年)至于今日,三年之中,凡日蚀二,大地震二,大旱一。    方今之日,中国日强,使夷狄不敢正视,此千秋之功也。而剥其表视其...
mubo_996067292 2010-09-03 00:27
继续升级:mil-mm,db-倍数,m/s-km/h,电阻并联转换计算器
新增:    增加了电阻并联计算。另:   所有的转换和计算,输入数字的时候都不能有数字之外的字符。...
mubo_996067292 2010-08-27 00:47
mil-mm,db-倍数,m/s-km/h转换计算器
几组常用的转换。...
mubo_996067292 2010-08-03 22:59
mm和mil转换
命令行模式,四个命令:help显示帮助信息quit 退出程序mil2mm <mil值>  mil转换为mmmm2mil <mm值>  mm转换为mil 直接找了个朋友在单片机上...
mubo_996067292 2010-03-09 22:31
雨夜弹琴
雨落深圳寒,加班夜归晚。坐闻窗飒飒,发性抚琴弹。...
EE直播间
更多
我要评论
4
11
关闭 站长推荐上一条 /3 下一条