/*
 * main.c
 *
 *  Created on: 2021年12月29日
 *      Author: xiaomeige
 */


//#include "stdio.h"
//#include "xil_io.h"
//#include "xgpiops_hw.h"
//#include "unistd.h"
//#include "stdint.h"
//
//#include "xil_types.h"
//int main(void)
//{
//		u32 reg_val = 0;
//		u32 Data = 0;
//
//
//		//设置IO方向，bit7的方向为输出
//		reg_val = Xil_In32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DIRM_OFFSET);
//		Data = reg_val | (1<<7);
//		Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DIRM_OFFSET, Data);
//
//		//设置输出使能，bit7输出使能
//		reg_val = Xil_In32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_OUTEN_OFFSET);
//		Data = reg_val | (1<<7);
//		Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_OUTEN_OFFSET, Data);
//
//		while(1)
//		{
//			//设置bit7输出1
//			Data = ((~(1<<7)) << 16) | (1<<7);
//			Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,  Data);
//			usleep(500000);
//
//			//设置bit7输出0
//			Data = ((~(1<<7)) << 16) & (~(1<<7));
//			Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,  Data);
//			usleep(500000);
//		}
//}


#include "xgpiops.h"
#include "unistd.h"

XGpioPs Gpio;
XGpioPs_Config *ConfigPtr;

uint32_t i=0;

int main(void)
{


	ConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
	XGpioPs_CfgInitialize(&Gpio, ConfigPtr, ConfigPtr->BaseAddr);


	XGpioPs_SetDirectionPin(&Gpio, 7, 1);
	XGpioPs_SetOutputEnablePin(&Gpio, 7, 1);

	/*设置MIO47为输入*/
	XGpioPs_SetDirectionPin(&Gpio, 47, 0);
	XGpioPs_SetOutputEnablePin(&Gpio, 47, 0);

	while(1)
	{
		while(!XGpioPs_ReadPin(&Gpio, 47))
		{
			//设置bit7输出1
			XGpioPs_WritePin(&Gpio, 7, 0x1);
			usleep(500000);

			//设置bit7输出0
			XGpioPs_WritePin(&Gpio, 7, 0x0);
			usleep(500000);
			i = 3;
		}

		while(i)
		{
			//设置bit7输出1
			XGpioPs_WritePin(&Gpio, 7, 0x1);
			usleep(500000);

			//设置bit7输出0
			XGpioPs_WritePin(&Gpio, 7, 0x0);
			usleep(500000);
			i = i - 1;
		}

		//设置bit7输出0
		XGpioPs_WritePin(&Gpio, 7, 0x0);
	}



	return 0;
}



//#include "xparameters_ps.h"
//#include "xil_io.h"
//#define DDR_BASEARDDR      XPAR_DDR_MEM_BASEADDR + 0x10000000
//
//int main()
//{
//    int i;
//    int rev[32];
//
//    for(i=0; i<32; i++)
//    {
//        Xil_Out32(DDR_BASEARDDR+i*4,i);
//    }
//
//    for(i=0; i<32; i++)
//    {
//        rev[i] = Xil_In32(DDR_BASEARDDR+i*4);
//    }
//
//    return 0;
//}


