vivado软件操作步骤与学习笔记1——hello world差不多,这里不再过多赘述,不同点是在zynq的设置中添加上GPIO的设置即可。
进入SDK软件后,程序如下:
#include "stdio.h"
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
//核心板上PS MIO0引脚
#define Output_Pin 0
XGpioPs_Config * ConfigPtr;
XGpioPs Gpio; /* The driver instance for GPIO Device. */
int main(){
printf("GPIO test\n");
//查找器件的ID,查找器件的配置信息
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
//初始化GPIO驱动
XGpioPs_CfgInitialize(&Gpio, ConfigPtr,ConfigPtr->BaseAddr);
//把GPIO的方向设置为输出(最后一个参数:0表示输入,1表示输出)
XGpioPs_SetDirectionPin(&Gpio, Output_Pin, 1);
//设置输出使能(最后一个参数:0表示关闭使能,1表示打开)
XGpioPs_SetOutputEnablePin(&Gpio, Output_Pin, 1);
//写数据GPIO的输出引脚(写入0x1)
XGpioPs_WritePin(&Gpio, Output_Pin, 0x1);
//闪烁
while(1){
//点亮
XGpioPs_WritePin(&Gpio, Output_Pin, 0x1);
//延时 sleep(1)延时1秒 usleep(1) 延时1微秒
sleep(1);
//熄灭
XGpioPs_WritePin(&Gpio, Output_Pin, 0x0);
//延时
sleep(1);
}
return 0;
}
开发板不一致的小伙伴记得找到自己开发板上PS端LED的MIO编号,然后作相应改动。
若需使用PS端的按键,及将MIO配置成输入,可参考以下代码:
#include "stdio.h"
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
//核心板上PS MIO0引脚:LED MIO12引脚:按键
#define MIO0_LED 0
#define MIO12_KEY 12
XGpioPs_Config * ConfigPtr;
XGpioPs Gpio; /* The driver instance for GPIO Device. */
int main(){
u32 key_value;
printf("GPIO test\n");
//查找器件的ID,查找器件的配置信息
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
//初始化GPIO驱动
XGpioPs_CfgInitialize(&Gpio, ConfigPtr,ConfigPtr->BaseAddr);
//把GPIO的方向设置为输出(最后一个参数:0表示输入,1表示输出)
XGpioPs_SetDirectionPin(&Gpio, MIO0_LED, 1);
//把GPIO的方向设置为输入(最后一个参数:0表示输入,1表示输出)
XGpioPs_SetDirectionPin(&Gpio, MIO12_KEY, 0);
//设置输出使能(最后一个参数:0表示关闭使能,1表示打开)
XGpioPs_SetOutputEnablePin(&Gpio, MIO0_LED, 1);
while(1){
//读取按键的状态
key_value = XGpioPs_ReadPin(&Gpio, MIO12_KEY);
//将按键的状态写入LED
XGpioPs_WritePin(&Gpio, MIO0_LED,key_value);
}
return 0;
}