ZYNQ(一):PS端MIO操作点LED灯

目录:
一、建立工程并生成SDK
二、SDK使用测试程序
三、具体的代码

说明:
平台:黑金社区的ZYNQ-7010
开发软件:vivedo2017.4

一、建立工程并生成SDK

建立工程:

在这里插入图片描述
然后下一步,给工程去个名字随便取下。

在这里插入图片描述

进入到这一个步骤,选择这个之后进行next下一步
在这里插入图片描述
选择对应的芯片平台,按照自己的芯片来选取(使用的是zynq7010)
在这里插入图片描述

最后next之后就直接点击完成就创建了一个工程了。

这个时候就会直接进入我们创建的工程中,然后在左侧窗口,创建块Design:
在这里插入图片描述
提示block名字可以随便起一个
在这里插入图片描述

一旦创建block design成功之后就会发现我们的右侧会有以窗口,并且点击+号那个图标:添加对应平台的block desin,.输入ZYNQ就会提示出。
在这里插入图片描述
点击添加之后会出现一下模块,然后双击这个图块。进去里面设置
在这里插入图片描述
然后就会来到一下设置界面。配置我们要使用的功能。我这里分为三个步骤吧
在这里插入图片描述
第一步、首先说明一下,去掉这个购的意思,就是我们这里仅仅是PS层的引脚,没有使用到PL层.这个MAXI是我们不需要的将其去掉。
在这里插入图片描述
第二步、我这里同时也配置了串口1,不然到时候有什么错误信息打印出来看不到。
我们本质就是使用PS的MIO引脚,然后将其添加上就可以了
在这里插入图片描述

第三步、这个是有关DDR设置,要看具体的芯片里面使用的DDR芯片了。最后点击OK。
在这里插入图片描述
点击自动生成块。然后有一个提示,直接点构建就OK了。
在这里插入图片描述
然后按照一下步骤,将其整个工程都构造一个,不要在意aaaa(名字我随便起的)
Generate Output Products
选择点击:Generate
当创建完3之后,然后再次创建4这个文件。直接默认点击Generate
在这里插入图片描述
在菜单栏:file->Export->Export Hardware,导出硬件信息,包含PS的配置信息
值得注意的是:当没有PL参与的时候没有使能 include bitstream当有PL参与的时候需要将其选项选上
在这里插入图片描述
在这里插入图片描述
剩下的时间就是在等待了。右上角的那个东东一旦旋转之后,就可以了。并且它会提示你说构建组合完成了。然后进行进行这一步,打开SDK

二、SDK使用测试程序

在这里插入图片描述

当SDK打开之后按照老规矩先建立一个HELLO的工程。
到这一步就深入了解一下。有关GPIO的两个带有API函数的头文件了
在这里插入图片描述

主要看的是这里,作为新手认识一下里面的API,分一下类这些API究竟是干嘛的。
在这里插入图片描述

到这里工程创建和API的介绍就完结了。

三、具体的代码**

这里要跑到原理图看下,你的PS-LED在那个引脚上面。正如大家看到我的是挂接在MIO0上面。

在这里插入图片描述

最后奉上我自己写的代码。
#include “stdio.h”
#include “xgpiops.h”
#include “GPIO.h”

#define DEVICEID  XPAR_PS7_GPIO_0_DEVICE_ID
#define  REG_INPUT  0
#define  REG_OUTPUT 1
#define  DATA_LOW   0
#define  DATA_HIGH  1
#define  BANK_MIO0  0

XGpioPs InstancePtr;
XGpioPs* XGInstancePtr = &InstancePtr;
int XGpiops_Init(void)
{
	char * FUNCTION = "[XGpiops_Init]";
	int Status = 0;
	XGpioPs_Config * XGpio_Cif;
	XGpio_Cif = XGpioPs_LookupConfig(DEVICEID);
	Status =  XGpioPs_CfgInitialize(XGInstancePtr,XGpio_Cif,XGpio_Cif->BaseAddr);
	if(Status != 0) {
		xil_printf("%s  XGpioPs_CfgInitialize error status:%d \n\r",FUNCTION,Status);
		return -1;
	}
//set MIO 0 as output & set MIO 13 as output
	XGpioPs_SetDirectionPin(XGInstancePtr,BANK_MIO0,REG_OUTPUT);

//Enable
	XGpioPs_SetOutputEnablePin(XGInstancePtr,BANK_MIO0,REG_OUTPUT);

//default LED off
//set MIO 0 as status OFF
	XGpioPs_WritePin(XGInstancePtr,BANK_MIO0,DATA_HIGH);
//set MIO 13 as status OFF

	return Status;
}

void MIO0_LED_OFF(int bank)
{
	XGpioPs_WritePin(XGInstancePtr,bank,DATA_HIGH);
}
void MIO0_LED_ON(int bank)
{
	XGpioPs_WritePin(XGInstancePtr,bank,DATA_LOW);
}

int main()
{
	int Status = 0;
    init_platform();
    Status = XGpiops_Init();
    if(Status != 0) {
    	xil_printf("XGpiops_Init error \n\r");
    	return 0;
    }
    while(1) {
    	MIO0_LED_ON(0);
    }
    printf("Hello World\n\r");
    cleanup_platform();
    return 0;
}
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值