板子: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接口锁上引脚,其他一样