五个GPIO的例子研究
NO1:
#include "xparameters.h"
#include "xgpio.h"
#include "xgpio_l.h"
#include "xutil.h"
int main (void)
{
XGpio dip, push;
int i, psb_check, dip_check;
XGpio LEDs8_Bit;
printf("-- Start of the Program --\r\n");
XGpio_Initialize(&dip, XPAR_DIP_DEVICE_ID); // device ID号的定义规则
XGpio_SetDataDirection(&dip, 1, 0xffffffff); // 必须注明通道号,否则出错
XGpio_Initialize(&push, XPAR_PUSH_DEVICE_ID);
XGpio_SetDataDirection(&push, 1, 0xffffffff);
XGpio_Initialize(&LEDs8_Bit, XPAR_LEDS_8BIT_DEVICE_ID);
XGpio_SetDataDirection(&LEDs8_Bit, 1, 0x0);
while (1)
{
psb_check = XGpio_DiscreteRead(&push, 1);
xil_printf("Push Buttons Status %x\r\n", psb_check); //: /n会使超级终端斜着显示
dip_check = XGpio_DiscreteRead(&dip, 1);
xil_printf("DIP Switch Status %x\r\n", dip_check); //: /r/n 会使正常往下显示
XGpio_DiscreteWrite(&LEDs8_Bit, 1, dip_check);
for (i=0; i<999999; i++);
}
}
NO2:
#define GPIO_INPUT_SWITCH1 0xffffffff
#define GPIO_OUTPUT_LED_FAULT 0x00010000
#define GPIO_OUTPUT_LED_POWER 0x00020000
#include "xbasic_types.h"
#include "xstatus.h"
#include "xparameters.h"
#include "xgpio.h"
#include "xgpio_l.h"
#include "xutil.h"
int main (void)
{
Xuint32 Data;
XStatus Status;
XGpio dip, push;
int i, psb_check, dip_check;
XGpio LEDs8_Bit;
printf("-- Start of the Program --\r\n");
XGpio_Initialize(&push, XPAR_PUSH_DEVICE_ID);
XGpio_SetDataDirection(&push, 1, 0xffffffff);
XGpio_Initialize(&LEDs8_Bit, XPAR_LEDS_8BIT_DEVICE_ID);
XGpio_SetDataDirection(&LEDs8_Bit, 1, 0x0);
Status = XGpio_Initialize(&dip, XPAR_DIP_DEVICE_ID);
if (Status != XST_SUCCESS) // XStatus Status为嵌入式中状态的定义关键字
{
printf("000\n");
}
else
{
printf("111\n");
}
XGpio_SetDataDirection(&dip,1,GPIO_INPUT_SWITCH1);
XGpio_DiscreteSet (&dip,1,GPIO_OUTPUT_LED_POWER);
XGpio_DiscreteClear (&dip,1,GPIO_OUTPUT_LED_FAULT);
while (1)
{
Data = XGpio_DiscreteRead(&dip,1); //检测按键是否被按下
xil_printf("Data=%x\r\n",Data);
if (Data & GPIO_INPUT_SWITCH1) { xil_printf("111\r\n"); } //有按下
else { xil_printf("222\r\n");} // /r/n //没按下
for (i=0; i<9999999; i++);
}
|