int XGpio_CfgInitialize (XGpio *InstancePtr , XGpio_Config *Config , u32 EffectiveAddr ) //成功:返回值:XST_SUCCESS实用调用函数给出的配置数据对XGpio进行初始化InstancePtr:是指向XGpio实例的指针。指针的内存空间必须有调用函数给分配好。通过XGpio API对其进行操作的函数可以通过这个指针来实现。Config:包含了指定GPIO设备的结构信息。通过Config文件的内容可以对InstancePtr进行初始化。通过在每次调用时给予不同的配置文件,这个函数可以初始化多个设备实例EffectiveAddr:是虚拟内存空间的设备基址。一旦这个函数被使用,调用函数要对从EffectiveAddr地址到设备物理基址的无变化地址映射负责。如果地址变化了,将会发生未知错误。如果不使用地址映射,直接将Config->BaseAddress(设备的物理地址) 传送给这个参数就可以了。 00000000000000000000000000000000000000000000000000000000000000000000000 u32 XGpio_DiscreteRead (XGpio * InstancePtr , //通过GPIO操作的寄存器 unsigned Channel //GPIO核有两个通道,这里就是通道的选择0_1 )无返回值00000000000000000000000000000000000000000000000000000000000000000000000 void XGpio_DiscreteClear (XGpio * InstancePtr , //通过GPIO操作的寄存器 unsigned Channel , //GPIO核有两个通道,这里就是通道的选择0_1 u32 Mask //32位 0x00000000 )
返回值:Current copy of the discretes register对特定GPIO通道的离散寄存器清零InstancePtr:是XGpio进行操作的指针。Channel:包含了要进行操作的通道(1或者2)Mask:是一个位数据的集合,这个集合将被写入离散的数据寄存器。其他数据寄存器不会受影响。 void XGpio_DiscreteSet (XGpio * InstancePtr , //通过GPIO操作的寄存器 unsigned Channel , //GPIO核有两个通道,这里就是通道的选择0_1 u32 Mask //32位 0x00000000 )无返回值这两个函数只对Mask中对应位为1的位有影响,比如,XGpio_DiscreteSet(&lcd240128,1,Ox00000001)将LCl3240128_pin<O>置1,而不影响其他位;同理,XGpio_DiscteteClear(&1cd240128,1,0x00000001)将LCD240128_pin<0>置0,而不影响其他位。 0000000000000000000000000000000000000000000000000000000000000000000000000000 void XGpio_DiscreteWrite (XGpio * InstancePtr, //通过GPIO操作的寄存器 unsigned Channel, //GPIO核有两个通道,这里就是通道的选择0_1 u32 Data //写入的数据,可以自己定义,可以通过其他变量获取 )无返回值0000000000000000000000000000000000000000000000000000000000000000000000000000 u32 XGpio_GetDataDirection (XGpio * InstancePtr , unsigned Channel )这个函数不太清楚,不过有个实例可以看看返回值:Bits set to 0 are output and bits set to 1 are input. 来源:kenzol的博客 |