第2.6讲 GPIO之MIO控制LED实验程序设计 36:24

对gpio操作
vivado2019.2 vitis
下载【2_领航者ZYNQ之嵌入式SDK开发指南_V2.0】文档

正点原子视频添加链接描述

读取的xsa文件是vivado生成的wrapper,每次生成的都不一样
在这里插入图片描述
在这里插入图片描述
然后新建一个application
![

](https://img-blog.csdnimg.cn/direct/4e8c29fc2aff42a6a85bbbe213af5f1f.png)

pynqz2原理图
参考了这个网页
原子的视频
在这里插入图片描述

没有编译报错,Xilinx Vitis运行报错executables selected for download on to the following processors doesn‘t exist的解决方法

视频15:30的时刻运行对。
需要注意板子上的跳线帽,启动不是SD启动,是JTAG启动
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

zynq一共118个io
在这里插入图片描述
在这里插入图片描述

0-117 in Zynq
查看【XGpioPs_SetDirectionPin】函数,在【xgpiops.c里面】
*

  • Set the Direction of the specified pin.
  • @param InstancePtr is a pointer to the XGpioPs instance.
  • @param Pin is the pin number to which the Data is to be written.
  •   Valid values are 0-117 in Zynq and 0-173 in Zynq Ultrascale+ MP.
    
  • @param Direction is the direction to be set for the specified pin.
  •   Valid values are 0 for Input Direction, 1 for Output Direction.
    
  • @return None.
    MIO有 0-53 一共54个
    在这里插入图片描述
    EMIO 有两个bank 每个32b
    编程思路就是:1.先根据器件的ID查找器件的配置信息;2.然后初始化GPIO的驱动3.把GPIO的方向设置为输出;4.设置输出使能;5.写数据到GPIO的输出引脚。
#include "stdio.h"
#include "xparameters.h" //器件参数信息
#include "xstatus.h"     //包含XST_FAILURE和XST_SUCCESS的宏定义
#include "xil_printf.h"  //包含print()函数
#include "xgpiops.h"     //包含PS GPIO的函数
#include "sleep.h"       //包含sleep()函数

#define GPIO_DEVICE_ID      XPAR_XGPIOPS_0_DEVICE_ID
#define MIO0_PIN 0  	//板上的MIO的位置是MIO0 0-117 in Zynq

XGpioPs Gpio;            // GPIO设备的驱动程序实例



int main()
{
	printf("GPIO MIO TEST!\n\r");

	XGpioPs_Config *ConfigPtr;
	int Status;
	//根据器件ID查询【配置信息】
    ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
    //初始化GPIO【驱动】
    Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr,
                        ConfigPtr->BaseAddr);
    if (Status != XST_SUCCESS){
        return XST_FAILURE;
    }

    //设置指定GPIO引脚的【方向】:0输入,1输出
    XGpioPs_SetDirectionPin(&Gpio, MIO0_PIN, 1);

    //【使能】指定引脚输出:0禁止输出使能,1使能输出
     XGpioPs_SetOutputEnablePin(&Gpio, MIO0_PIN, 1);

     //写数据到GPIO引脚
     XGpioPs_WritePin(&Gpio, MIO0_PIN, 0x1);


	return 0;
}

解读MIO-EMIO

在这里插入图片描述

视频
右键,端口,选择make external
在这里插入图片描述

ZYNQ7020 芯片的 BANK35 内,该 BANK 的供电电压为 3.3V

bank电压分配的问题
然后Bank500有16个IO口,Bank501有38个IO口,共54个;

在这里插入图片描述
分出来5个EMIO
在这里插入图片描述

在这里插入图片描述
使用PL端资源,必须生成bit文件

在这里插入图片描述

用的vitis 2019.2 步骤不一样,要新建一个工程,读入xsa,上面生成的
在这里插入图片描述
在这里插入图片描述
一个空的src
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#include "stdio.h"
#include "xparameters.h" //器件参数信息
#include "xstatus.h"     //包含XST_FAILURE和XST_SUCCESS的宏定义
#include "xil_printf.h"  //包含print()函数
#include "xgpiops.h"     //包含PS GPIO的函数
#include "sleep.h"       //包含sleep()函数

#define GPIO_DEVICE_ID      XPAR_XGPIOPS_0_DEVICE_ID
#define LED0_PIN 58 	//板上的EMIO的位置 0-117 in Zynq
#define LED1_PIN 57
#define LED2_PIN 56
#define LED3_PIN 55
#define LED5_G_PIN 54	//bank2 开始54

XGpioPs Gpio;            // GPIO设备的驱动程序实例



int main()
{
	printf("GPIO MIO TEST!\n\r");

	XGpioPs_Config *ConfigPtr;
	int Status;

	//根据器件ID查询【配置信息】
    ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
    //初始化GPIO【驱动】
    Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr,
                        ConfigPtr->BaseAddr);
    if (Status != XST_SUCCESS){
        return XST_FAILURE;
    }

    //设置指定GPIO引脚的【方向】:0输入,1输出
    XGpioPs_SetDirectionPin(&Gpio, LED0_PIN, 1);
    XGpioPs_SetDirectionPin(&Gpio, LED1_PIN, 1);
    XGpioPs_SetDirectionPin(&Gpio, LED2_PIN, 1);
    XGpioPs_SetDirectionPin(&Gpio, LED3_PIN, 1);
    XGpioPs_SetDirectionPin(&Gpio, LED5_G_PIN, 1);

    //【使能】指定引脚输出:0禁止输出使能,1使能输出
     XGpioPs_SetOutputEnablePin(&Gpio, LED0_PIN, 1);
     XGpioPs_SetOutputEnablePin(&Gpio, LED1_PIN, 1);
     XGpioPs_SetOutputEnablePin(&Gpio, LED2_PIN, 1);
     XGpioPs_SetOutputEnablePin(&Gpio, LED3_PIN, 1);
     XGpioPs_SetOutputEnablePin(&Gpio, LED5_G_PIN, 1);


     while(1){
     //写数据到GPIO引脚
     XGpioPs_WritePin(&Gpio, LED0_PIN, 0x1);
     XGpioPs_WritePin(&Gpio, LED1_PIN, 0x1);
     XGpioPs_WritePin(&Gpio, LED2_PIN, 0x1);
     XGpioPs_WritePin(&Gpio, LED3_PIN, 0x1);
     XGpioPs_WritePin(&Gpio, LED5_G_PIN, 0x1);
     sleep(1);
     XGpioPs_WritePin(&Gpio, LED0_PIN, 0x0);
     XGpioPs_WritePin(&Gpio, LED1_PIN, 0x0);
     XGpioPs_WritePin(&Gpio, LED2_PIN, 0x0);
     XGpioPs_WritePin(&Gpio, LED3_PIN, 0x0);
     XGpioPs_WritePin(&Gpio, LED5_G_PIN, 0x0);
     sleep(1);

     }

	return XST_SUCCESS;
}


5个led亮

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/634263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

202472读书笔记|《首先你要快乐,其次都是其次》——快乐至上,允许一切发生

202472读书笔记|《首先你要快乐,其次都是其次》——快乐至上,允许一切发生 《首先你要快乐,其次都是其次》作者林小仙,挺轻松的小漫画,清新的文字。 生而为人,我很抱歉,大可不必。 生活已经很难…

深度学习之基于Pytorch框架的卷积神经网络图像去雨系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在图像处理领域,图像去雨技术一直是一个热门的研究方向。随着深度学习技术的快速发展&am…

使用echarts配置中国地图

使用echarts配置中国地图 首先要下载地图的geoJSON数据,有两个方式下载,一种是去echarts的github资源文件里面,一种是去阿里云的datav网站。 1.1 echarts文档下载中国地图json数据 1.2 阿里云datav 新建项目,新建index.html,下…

【免费】支持向量机回归预测(SVR)的MATLAB实现(含源代码)

支持向量机(Support Vector Machine, SVM)是一种常用于分类和回归分析的机器学习算法。虽然SVM最为人熟知的是其分类应用,但它同样适用于回归任务,被称为支持向量回归(Support Vector Regression, SVR)。以…

项目启动失败,【consul】

如题,启动时项目未能正常启动,但上次都一切正常,日志提示: Consul service ids must not be empty, must start with a letter 经过排查是因为consul的consulconfigservice服务假死,导致无法正常获取到配置文件&am…

用Python的PyAutoGUI库控制鼠标滚轮

哈喽,大家好,我是木头左! 轻松上手:安装与导入 要开始使用pyautogui库,你需要做的第一件事就是确保它已经被安装在你的Python环境中。你可以通过运行以下命令来安装: pip install pyautogui安装完成后&am…

当代人工智能三教父——深度学习三巨头

文章目录 引言 人物介绍 突出贡献 专业名词解释 引言 今天下午闲来无事翻阅了一下csdn首页的头条文章——《27 岁天才创始人 Joel Hellermark 分享了自己和“AI 教父” Geoffery Hinton 的最新采访》 感觉挺有意思,就从头到尾的看了一遍,里面有很多…

说一说@Transactional

添加Transactional注解后,Spring会将每个方法执行封装为AOP的执行过程,每次执行到注解的方法时,会判断是否需要开启事务,如果事务创建成功,则执行业务逻辑,业务逻辑执行完成后,提交事务或异常后…

园区网的基本了解

园区网使用的典型技术---IEEE802.3标准/IEEE802.11标准 封闭式园区网络 ---由内部人员使用,不能访问互联网。 ---制订各式各样的规章制度 ---NAC,网络接入控制 开放式园区网络 ---服务于公众的,认证 园区网的发展 第一代:…

spring cloud gateway一些相关概念

在云架构中运行着众多客户端和服务端,API网关的存在提供了保护和路由消息,隐藏服务,限制负载等等功能。下图是spring cloud gateway所处的位置。 它有三大概念: 路由:路由是构建网关的基本模块,它由ID&…

C++第三方库【JSON】— jsoncpp

目录 认识JSON jsoncpp库 安装&使用 认识jsoncpp Json::Value jsoncpp序列化 jsoncpp反序列化 认识JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,常用于在客户端和服…

使用RAG和文本转语音功能,我构建了一个 QA 问答机器人

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

S1C17M02/M03专为数字万用表设计

在电子及自动化领域,精确的测量数据是至关重要的环节。无论是在生产线的质量控制实验室的研究测试还是复杂电子系统的故障诊断,数字万用表都是一种不可或缺的工具,随着技术的进步,对测量参数、精度的要求越来越高,同时对设备的体积…

精准安全运维,统信UOS服务器版V20(1070)漏洞修复指南丨年度更新

随着信息安全威胁的不断升级,操作系统的安全性已成为企业运维的关键要素。 为了确保业务运行环境的安全无忧,统信软件持续致力于技术创新和优化,并于日前重磅推出了统信UOS服务器版V20(1070)。该系统提供了高频补丁更…

0407放大电路的频率响应

放大电路的频率响应 单时间常数RC电路的频率响应中频响应高频响应低频响应全频域响应 放大电路频率响应概述1. 直接耦合放大电路频域响应阻容耦合放大电路频域响应 4.7.1 单时间常数RC电路的频率响应 4.7.2 放大电路频率响应概述 4.7.3 单级共射极放大电路的频率响应 4.7.4 单级…

机器学习圣经PRML作者Bishop推出重磅教材

图1 书籍《Pattern Recognition and Machine Learning》 只要学人工智能的人,必然学机器学习。 只要学机器学习的人,必然看PRML。 PRML为何物? PRML全名《Pattern Recognition and Machine Learning》,一部机器学习领域的内功…

Git总结超全版

最近想系统的回顾一下Git的使用,如果只想快速的集成git到idea,可以参考另一篇我的博客中的git部分 目录 版本管理工具简介Git安装与配置Git远程仓库配置 Git常用命令为常用命令配置别名(可选)Git忽略文件.gitignore一些概念*本地仓库操作删除仓库内容 *远…

RabbitMQ的基本组件有哪些?

RabbitMQ的基本组件有哪些? RabbitMQ介绍、解耦、提速、削峰、分发 详解、RabbitMQ安装 可视化界面讲解 RabbitMQ 不生产消息,他是消息的搬运工。 1. Producer: 消息的发布者。 2. Connection:producer/comsumer 和 Message Broker 之间的 TCP 连接。 3…

Vue3:封装Table 表格组件

组件官网 elementPlus : 点击跳转 封装组件 创建新的组件文件: Table.vue <!-- PropTableS &#xff1a; 父组件传递过来的数据 (对象)PropTableS.tables : 父组件传递的对象中 存放表格每行显示的数据PropTableS.keyS &#xff1a; 父组件传递过来的对象&#xff0c;里…

Navicat 连接 OceanBase 快速入门 | 社区版

Navicat Premium&#xff08;16.1.9或更高版本&#xff09;正式支持 OceanBase全线数据库产品。OceanBase为现代数据架构打造的开源分布式数据库。兼容 MySQL 的单机分布式一体化国产开源数据库&#xff0c;具有原生分布式架构&#xff0c;支持金融级高可用、透明水平扩展、分布…