void XGpioPs_SetDirectionPin(XGpioPs *InstancePtr, u32 Pin, u32 Direction)
参数1:XGpioPs结构体指针
参数2:Pin是要写入数据的Pin的号码,zynq中为0-117(包括MIO和EMIO)
参数3:指定引脚设置的方向,输入方向为:0,输出方向为:1。
返回值:无
void XGpioPs_SetDirectionPin(XGpioPs *InstancePtr, u32 Pin, u32 Direction)
{
u8 Bank;
u8 PinNumber;
u32 DirModeReg;
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
Xil_AssertVoid(Pin < InstancePtr->MaxPinNum);
Xil_AssertVoid(Direction <= (u32)1);
/* Get the Bank number and Pin number within the bank. */
//此函数根据传入的pin_num 在内部查询得到属于哪一个bank中,然后将bank返回
XGpioPs_GetBankPin((u8)Pin, &Bank, &PinNumber);
//读取寄存器里面的初始值,不要轻易去更改,到时候将我们的值两者取或再写进去即可
DirModeReg = XGpioPs_ReadReg(InstancePtr->GpioConfig.BaseAddr,
((u32)(Bank) * XGPIOPS_REG_MASK_OFFSE