微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > niosII中串口RS232程序使用结构体和联合体结合的用法

niosII中串口RS232程序使用结构体和联合体结合的用法

时间:12-16 来源:互联网 点击:

S II主端口与16位UART端口进行数据传输时,只有32位的低16位有效,但是高16位也占用了地址空间,也就是说,UART端口的16位实际上是占用了32位的。假设我们现在的基地址是0X00,那么6个寄存器他们相对基地址的偏移分别为0X00,0X01,0X02,0X03,0X04,0X05;那么,从主端口看,这6个寄存器的地址分别为0X00,0X04,0X08,0X0C,0X10,0X14,而不是0X00,0X01,0X02,0X03,0X04,0X05,也不是0X00,0X02,0X06,0X08,0X0A,0XC,这一点大家要特别注意。

2. 为什么要建立这样一个共用体呢,又有位域结构体又有一个volatileunsignedlongintWORD变量,WORD有啥用呢?

共用体的特点就是其中的成员占用同一个存储空间。也就说,由位域组成的结构体跟WORD是占用同一存储空间,而且他们都是volatileunsignedlongint类型,那么,结构体中的每一个位域成员都对应WORD的一个位。当我们需要单独处理一个位的时候,我们就可以用位域,如下所示

RS232->CONTROL.BITS.IRRDY=1;//接收准备好中断使能

如果我们想要对状态寄存器整体清零呢,我们就可以用到WORD了,如下所示

RS232->STATUS.WORD=0;//清除状态寄存器

对于其他的寄存器都是一样的,在这里不再重复了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top