soc 通过GPIO点亮LED

板子:ZedBoard       

#include "xgpiops.h"
#include "sleep.h"
int main()
{
	static XGpioPs psGpioInstancePtr;//GPIO参数
	XGpioPs_Config* GpioConfigPtr;//GPIO的设备地址和基地址
	int iPinNumber= 9; //LD9连接的是MIO7,操作的端口
	u32 uPinDirection = 0x1; //1表示输出,0表示输入
	int xStatus;
	//--MIO的初始化
	GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);//查找GPIO的配置
	if(GpioConfigPtr == NULL)
		return XST_FAILURE;
	xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr,GpioConfigPtr->BaseAddr);//完成GPIO配置初始化
	if(XST_SUCCESS != xStatus)
		print(" PS GPIO INIT FAILED \n\r");
	//--MIO的输入输出操作
	XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumber,uPinDirection);//配置MIO输出方向
	//首先它有一个读取bank 号的子程序,然后读取需要写入的寄存器地址,接下来对pinbumer 这一位单独做一些操作,最后把方向寄存器的值写入到读出的那个寄存器当中
	XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumber,1);//配置MIO的第7位输出
	while(1)
	{
		XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 1);//点亮MIO的第7位输出1
		usleep(500000); //延时
		XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 0);//熄灭MIO的第7位输出0
		usleep(500000); //延时
	}
	/****************************************************************
	while(1)
	{
		XGpioPs_WriteReg(0xE000A000,0x00000000, 0xFF7FFFFF&0xFFFF0080);
		usleep(500000); //延时
		XGpioPs_WriteReg(0xE000A000,0x00000000, 0xFF7FFFFF&0xFFFF0000);
		usleep(500000); //延时
	}
	******************************************************************/
	return 0;
}

具体C代码如上

此处再说明下EMIO与MIO的区别,MIO是直接与ps相连,而EMIO是与pl相连,所以在做ps时,若要调用EMIO,则必须对调用的EMIO接口锁上引脚,其他一样

猜你喜欢

转载自blog.csdn.net/Foverve1/article/details/76273763
soc
今日推荐