搜索
您的当前位置:首页正文

NIOS 寄存器的三种映射方式

来源:爱go旅游网

alt寄存器赋值三种方式:

 

方式一:
         传统的HAL方式,也就是使用altera的方式(暂且这样说吧)
         注:本方式需包含头文件 altera_avalon_pio_regs.h
         端口写操作:IOWR_ALTERA_AVALON_PIO_DATA(BASE,数值)
         端口读操作:IORD_ALTERA_AVALON_PIO_DATA(BASE)
           
         个人觉得此方式没有什么优点可谈,并且在程序中要写大量的IOWR_ALTERA_AVALON_PIO_DATA之类的语句,繁琐,
          初学者还不好理解。


(7.58 KB)
2010-6-7 17:57


方式二:
         定义宏(定义指针)
         #define IO  *(volatile unsigned char *) IO_BASE
         端口写操作:IO=数值
         端口读操作:m=IO(m为读端口的数值)
         
         个人觉得此方式方便。语句简单,更靠近单片机编程。
         例如:定义了数码管SEG,要想给它赋值,只接写SEG=段值就OK了。
         
         P.S:本方式在CPU等级选择时注意,针对DE0的cyclone 3,如果选择Fast型CPU需做如下设定,否则寄存器无法映射。

(34.48 KB)
2010-6-6 14:49



   

(7.58 KB)
2010-6-7 17:57


方式三:
          定义结构体
         

(26.83 KB)
2010-6-6 14:49


          这是altera官方手册中PIO的寄存器图。
         现定义结构体如下:
         注:建议采用头文件包含形式。以便成成自己的一套体系。

复制代码

         个人觉得此方式在定义像串口之类的IP,特别方便。并且能形成自己的一套头文件,编程非常方便。

         操作方式:
          LED->DATA = 1<<i;
         这样就可以是一个简单的流水灯了,呵呵,怎么样,是不是要简单很多?


(7.58 KB)
2010-6-7 17:57



         结语:
               采用第二种,第三种寄存器映射方式非常方便,大家一定都要学会。
               有关寄存器,请大家参阅          altera官方手册第三卷EmbeddedPeripherals

转载于:https://www.cnblogs.com/GL-BBL/archive/2012/08/23/2651747.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Top