SDK程序分析:
main.c
#include "xgpiops.h"
#include "sleep.h"
int main()
{
static XGpioPs psGpioInstancePtr;
XGpioPs_Config* GpioConfigPtr;
int iPinNumber= 7; //LD9连接的是MIO7
u32 uPinDirection = 0x1; //1表示输出,0表示输入
int xStatus;
//--MIO的初始化
GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
if(GpioConfigPtr == NULL)
return XST_FAILURE;
xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr, GpioConfigPtr->BaseAddr);
if(XST_SUCCESS != xStatus)
print(" PS GPIO INIT FAILED \n\r");
//--MIO的输入输出操作
XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumber,uPinDirection);//配置MIO输出方向
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumber,1);//配置MIO的第7位输出
while(1)
{
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 1);//点亮MIO的第7位输出1
sleep(1); //延时
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 0);//熄灭MIO的第7位输出0
sleep(1); //延时
}
return 0;
}
分析 1
语句: static XGpioPs psGpioInstancePtr;
含义: 这是一个指针实例,指向添加的 GPIO 端口。
具体分析:
XGpiops:绿色标识的一个结构体。 SDK 中结构体都用绿色标识。
将鼠标停留在 XGpiops 上或右键 Open Declaration,查看这个结构体所包含的内容。
结构体包含 GPIO 一些参数,分别是:
typedef struct {
XGpioPs_Config GpioConfig; | /**< 设备配置*/ |
u32 IsReady; | /**<设备是否初始化并准备好 */ |
XGpioPs_Handler Handler; /**<所有状态的处理程序*/ | |
void *CallBackRef; u32 Platform; u32 MaxPinNum; u8 MaxBanks; } XGpioPs; | /**<块处理程序的回调*/ /**<设备数据*/ /**< GPIO 的最大 pin 数量 */ /**< GPIO 的最大的 bank 数量 */ |