ZYNQ_MIO_C代码

全局变量

#define MIO_PinNumber 34    // 宏定义对应MIO引脚
static XGpioPs g_psGpioInstancePtr;//定义结构体

初始化函数

int MIO_Init()
{
	//MIO struct initial
	int xStatus;
	XGpioPs_Config* GpioConfigPtr;
	
	//--MIO的初始化
	GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);//获取GPIO_0配置
	if(GpioConfigPtr == NULL)
	{
		return XST_FAILURE; 
	}
	xStatus = XGpioPs_CfgInitialize(&g_psGpioInstancePtr, GpioConfigPtr, GpioConfigPtr->BaseAddr);
	if (Status != XST_SUCCESS) 
	{
		print("gpio_mio config error!\n");
		return XST_FAILURE;
	}
	
	//--MIO的输入输出操作
	XGpioPs_SetDirectionPin(&g_psGpioInstancePtr, MIO_PinNumber, 1);      //配置MIO34 direct is out;第二个参数为引脚号;第三个参数为控制输入输出:0为输入、1为输出
	XGpioPs_SetOutputEnablePin(&g_psGpioInstancePtr, MIO_PinNumber, 1);    //配置MIO引脚的输出使能;第二个参数为引脚号;第三个参数为控制使能:1代表使能、0代表失能
}

控制IO

// 控制IO,方法一
XGpioPs_WritePin(&g_psGpioInstancePtr, MIO_PinNumber, 0);   // 设置对应引脚为低电平
XGpioPs_WritePin(&g_psGpioInstancePtr, MIO_PinNumber, 1);   // 设置对应引脚为高电平

// 控制IO,方法二
/*
* 参数一:MIO基地址:固定为0xE000A000
* 参数二:MIO偏移地址:	0x00000000,MIO  0~15
*						0x00000004,MIO 16~31
*						0x00000008,MIO 32~47
*						0x0000000b,MIO 48~54
* 参数三:32位的参数,分成2个16位:	低16位为设置管脚高低电平
* 									高16位为控制低16为的设置是否有效,只有当高16位的对应bit为0时,低16位对应bit设置高低电平才有效
*/
// 34引脚
XGpioPs_WriteReg(0xE000A000, 0x00000008, 0xFFFBFFFF & 0xFFFF0004);  // 设置对应引脚为高电平
XGpioPs_WriteReg(0xE000A000, 0x00000008, 0xFFFBFFFF & 0xFFFF0000);  // 设置对应引脚为低电平
// 0引脚
XGpioPs_WriteReg(0xE000A000, 0x00000000, 0xFFFFFFFE & 0xFFFF0001);  // 设置对应引脚为高电平
XGpioPs_WriteReg(0xE000A000, 0x00000000, 0xFFFFFFFE & 0xFFFF0000);  // 设置对应引脚为低电平

发表评论

电子邮件地址不会被公开。 必填项已用*标注