前面我做了几个实验 都没有用过 开关,这一次用一用

发现 vivado 真的挺方便 所以 使用 vivado 开发

1.建工程

我使用 vivado 2013.4

创建新工程 –》 next –》next

勾选 Do not specify sources at this time   //这样跳过后面两个添加文件页面

选择 board –》 zedboard –》next –》finsh

就创建完了。

2.PL端 IP核添加与连线

创建一个空的 Diagram

Create Block Design -》点 ok

接下来 添加 IP核  可以点击 提示 Add IP  也可以点击

搜索 zynq 点 第一个

然后 点击 Run Block Automation  自动配置

点击 添加 GPIO

接下来 会提示 Run Connection Automation 自动连线

选择 S_AXI    变成下图

系统自动添加了 一些IP核

继续点击 Run Connection Automation  -》 GPIO

选择 led_8bits  -》 OK

同样的方法 添加  GPIO IP核  -》 Run Connection Automation 两次  选择 sws_8bits

就完成了

点击  红圈处 验证 一下。

3.生成 bit 的过程

点击 Source  -》 design_1  右键 –》 Create HDL Wrapper  -》 OK

然后  Synthesis 、 Implementation 、Bitstream 依次过一遍

这个过程费时间。。  Synthesis 以后 一直点ok    最后 点击 Generate Bitstream

4.输出到SDK

选上 launch SDk 点 OK  就启动SDK 了

我的 SDK 是

点击 FILE –》 new –>  Application project

选一个 helloworld

复制以下代码

 #include <stdio.h>
#include "platform.h"
#include "xparameters.h"
#include "xgpio.h"
#include "sleep.h"
#include "platform.h"
#include "xil_types.h"
#include "xgpiops.h" /************************** Constant Definitions *****************************/ /*
* The following constant maps to the name of the hardware instances that
* were created in the EDK XPS system.
*/
#define XPAR_LEDS_ID XPAR_AXI_GPIO_0_BASEADDR //AXI_GPIO_0 是添加的第一个 gpio 所以是 leds
#define XPAR_SWS_ID XPAR_AXI_GPIO_1_BASEADDR //那么 这个自然是 开关了 int main()
{
static XGpio LED_Ptr;//定义GPIO指针
static XGpio SWS_Ptr;
int XStatus;
int num = ;
//初始化 LED
XStatus = XGpio_Initialize(&LED_Ptr,XPAR_AXI_GPIO_0_DEVICE_ID);
if(XST_SUCCESS != XStatus)
print("GPIO INIT FAILED\n\r");
XGpio_SetDataDirection(&LED_Ptr, ,0x00);//通道1;设置方向 0 输出 1输入, 0x00表示8位都是输出
XGpio_DiscreteWrite(&LED_Ptr, ,0x00); //初始化 开关
XStatus = XGpio_Initialize(&SWS_Ptr,XPAR_AXI_GPIO_1_DEVICE_ID);
if(XST_SUCCESS != XStatus)
print("GPIO INIT FAILED\n\r");
XGpio_SetDataDirection(&SWS_Ptr, ,0xFF);//通道1;设置方向 0 输出 1输入 0xFF表示8位都是输入 while(){
num = XGpio_DiscreteRead(&SWS_Ptr, ); //从开关处 读数据
printf("Numb %d\n\r", num);
XGpio_DiscreteWrite(&LED_Ptr, ,num); //直接写入 led
usleep(); //delay 1ms
} printf("end\n\r \n\r");
return ;
}

确保 zedboard 已经连到电脑上 并打开电源

先 xilinx Tools –> ProgramFPGA

然后   -> Run As –> Launch on Hardware (GDB)

可以看到 结果  64 + 1

第 7 个 和 第 1 个  开关 是开的

表示 所以 led 也亮了

实验 使用 vivado zedboard GPIO 开关 开控制 LED的更多相关文章

  1. Beaglebone Black–GPIO 高低电平控制 LED 灯

    上一篇,运用 Linux 的 sysfs,控制本机上的 LED 灯,usr0 至 usr3,这次用 GPIO 控制外部的电路,点亮 LED 灯. 这次的全部材料: BBB 一台 购买 BBB 自带的 ...

  2. 树莓派GPIO控制LED彩灯

    树莓派使用GPIO接口来控制LED灯,自制五彩炫光的节日彩灯. 1.硬件准备 a. 树莓派(Raspberry Pi)一个 b. 彩色RGB二极管 c. 杜邦线 d. 5V电源引脚 以上所有零件均可在 ...

  3. 【蓝牙低功耗BLE】控制GPIO来点亮LED

    这节讲一下最简单的,也是最基础的东西.CC2540的IO操作,把PORT口当做GPIO来用,废话不多说,往下看. 1.硬件电路 硬件电路时最简单的,用一根GPIO去控制LED灯.因为GPIO作为out ...

  4. 【iCore4 双核心板_ARM】例程四:USART实验——通过命令控制LED

    实验原理: 开发板上自带一片CH340芯片,完成本实验电脑需要安装CH340驱动, CH340的TXD连接STM32的GPIO(PXC7),CH340的RXD连接STM32的 GPIO(PC6),通过 ...

  5. 【iCore1S 双核心板_ARM】例程四:USART通信实验——通过命令控制LED

    实验原理: 开发板上自带一片CH340芯片,完成本实验电脑需要安装CH340驱动, CH340的TXD连接STM32的GPIO(PB6),CH340的RXD连接STM32的 GPIO(PB7),通过串 ...

  6. 利用DoHome APP和音箱控制LED灯实验参考步骤

    准备材料: Arduino Uno 一块 Arduino 扩展板        购买链接 DT-06模块一个       购买链接 安卓手机一个 小度音箱一个 小灯珠一个 杜邦线若干 1.DT-06固 ...

  7. 基于arduino UNO R3+ESP8266控制LED灯的开关(无USB转TTL工具实现)

    最近由于项目要求,需要开发物联网云平台,而本人对硬件和通信技术一窍不通,故而选择arduino这一简单单片机来实现学习掌握基础的硬件和通信技术. 下面就是本人通过查阅大佬资料做的一个整合版本的通过手机 ...

  8. (三)开关检测来控制LED灯的亮灭

    开关检测案例一: 具体电路图如下: K1--K4闭合,控制 D1—D4 亮灭 产生的问题: 1.关于 R8 R9 R7 R10 的阻值选择问题,倘若太大的话,  比如10K 不管开关断开还是闭合,好像 ...

  9. Arduino控制LED灯(开关控制)

    问题:当使用"digitalRead(BUT) == 1"控制LED灯时会出现"digitalWrite(LED, ledState);"的值出现跳动. 原因: ...

随机推荐

  1. 预处理-04-#if defined和#if !defined

    因为对于一个大程序而言,我们可能要定义很多常量( 不管是放在源文件还是头文件 ),那么我们有时考虑定义某个常量时,我们就必须返回检查原来此常量是否定义,但这样做很麻烦. if defined 宏正是为 ...

  2. 移动页面请使用CSS3动画

    说到动画,我们一般会使用jQuery 中的animate(); 在PC浏览器中,是很方便的,由于PC的高性能,这种不断修改DOM的做法确实不会出现太大的问题,但是在手机端就不同了. 手机上使用jQue ...

  3. js世界这么大,闭包想看看

    什么是闭包,为什么要用他?闭包是能够访问其他函数作用域的函数.我们来分析下句子成分(语文大神),闭包是函数,js函数的作用域分为全局作用域,局部作用域,eval作用域,并没有块级作用域形象的讲,每个函 ...

  4. java异常处理 throw RuntimeException时不需要同时方法中声明抛出throws 异常等待调用者catch进行捕获 子父类异常问题

    package com.swift.exception1; public class Demo_Exception { public static void main(String[] args) { ...

  5. mariadb多实例实现

    环境:centos7,yum 安装mariadb5.5 mkdir /mysqldb/{3306,3307.3308}/{etc,socket,pid,log,data} -pv chown -R m ...

  6. Mysql: pt-table-checksum 和 pt-table-sync 检查主从一致性,实验过程

    一.安装 percona 包 1.安装仓库的包 https://www.percona.com/doc/percona-repo-config/yum-repo.html sudo yum insta ...

  7. 微信小程序开发入门学习(2):小程序的布局

    概述 小程序的布局采用了和Css3中相同的 flex(弹性布局)方式,使用方法也类似(只是属性名不同而已). 水平排列 默认是从左向右水平依次放置组件,从上到下依次放置组件. 任何可视组件都需要使用样 ...

  8. Notepad++安装SVN插件

    第一种方法,在插件管理中安装: 插件->Plugin Manager->show plugin manager->找到subversion->install; 第二种方法,直接 ...

  9. mysql的一些相关的命令(2013-05-05-bd 写的日志迁移

    cmd中连接:mysql -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)断开:exit (回车) --建立数据库creata database 数据库名;--切换到数据库下工 ...

  10. list函数及list对象的reverse方法

    list的reverse方法,是就地reverse,不返回值 如a是一个list,a.reverse()直接将a这个list给reverse了,所以如果print(a.reverse())就是None ...