/*
 * main.c
 *
 *  Created on: 20211229
 *      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;

		uint32_t i = 100;

		//IObit7ķΪ
		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(i)
		{
			//bit71
			Data = ((~(1<<7)) << 16) | (1<<7);
			Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,  Data);
			usleep(500000);

			//bit70
			Data = ((~(1<<7)) << 16) & (~(1<<7));
			Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,  Data);
			usleep(500000);
			i--;
		}
}


//#include "xgpiops.h"
//#include "unistd.h"
//
//XGpioPs Gpio;
//XGpioPs_Config *ConfigPtr;
//
//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))
//		{
//			//bit71
//			XGpioPs_WritePin(&Gpio, 7, 0x1);
//			usleep(500000);
//
//			//bit70
//			XGpioPs_WritePin(&Gpio, 7, 0x0);
//			usleep(500000);
//		}
//
//		//bit70
//		XGpioPs_WritePin(&Gpio, 7, 0x0);
//	}
//
//
//
//	return 0;
//}
