ZYNQ: GPIO 之 MIO 控制 LED 实验

news2024/12/26 23:46:38

GPIO 之 MIO 控制 LED 实验目的

使用 GPIO 通过两个 MIO 引脚控制 PS 端两个 LED 的亮灭,实现底板上 PS_LED0、PS_LED1 两个 LED 灯同亮同灭的效果。
在这里插入图片描述

简介

ZYNQ PS 中的外设(如 USB 控制器、UART 控制器、I2C 控制器以及 GPIO 等等)可以通过 MIO(multiplexed I/O,多路复用 I/O)模块连接到 PS 端的引脚上,也可以通过 EMIO(extended multiplexed I/O interface,扩展多路 I/O 接口)连接到 PL 端的引脚。Zynq-7000 系列芯片一般有 54 个 MIO,

MIO 一览表
在这里插入图片描述
DATA_RO 是数据只读寄存器,通过该寄存器能够观察器件引脚上的值
DATA 是数据寄存器,该寄存器控制 GPIO 信号配置为输出时要输出的值
MASK_DATA_LSW 和 MASK_DATA_MSW 是数据掩码寄存器
DIRM 是方向模式寄存器,用于控制 I/O 引脚是用作输入还是输出。当 DIRM [x] == 0 时,输出驱动器被禁用,该引脚作为输入引脚使用。

在这里插入图片描述

硬件设计

创建 Vivado 工程

在“Hello World”实验的基础上进行
先打开“Hello World”实验的 Vivado 工程,打开后选择菜单栏的 File-> Project->Save As
在这里插入图片描述
在这里插入图片描述

使用 IP Integrator 创建 Processing System

在这里插入图片描述
在这里插入图片描述
点击OK ,按 Ctrl+S 快捷键保存 Diagram
在这里插入图片描述

连接到外设 LED 和 KEY 的 GPIO_MIO
在这里插入图片描述

生成顶层 HDL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成 Bitstream 文件并导出到 Vitis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

软件设计

在 Vitis 中创建应用工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

		case XPLAT_ZYNQ:
			Input_Pin = 14;
			Output_Pin = 10;
			break;

修改为

		case XPLAT_ZYNQ:
			Input_Pin = 14;
			Output_Pin = 0;
			break;

在这里插入图片描述
在这里插入图片描述

#include "xparameters.h" //器件参数信息
#include "xstatus.h" //包含 XST_FAILURE 和 XST_SUCCESS 的宏定义
#include "xil_printf.h" //包含 print()函数
#include "xgpiops.h" //包含 PS GPIO 的函数
#include "sleep.h" //包含 sleep()函数
// MIO 引脚的高电平对应的是 LED 灯亮,低电平对应 LED 灯灭
//宏定义 GPIO_DEVICE_ID
#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
//连接到 MIO 的 LED
#define MIOLED0 7 //连接到 MIO7
#define MIOLED1 8 //连接到 MIO8
XGpioPs Gpio; // GPIO 设备的驱动程序实例

int main()
{
int Status;
XGpioPs_Config *ConfigPtr;

print("MIO Test! \n\r");
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr,
ConfigPtr->BaseAddr);
if (Status != XST_SUCCESS){
return XST_FAILURE;
}
//设置指定引脚的方向:0 输入,1 输出
XGpioPs_SetDirectionPin(&Gpio, MIOLED0, 1);
XGpioPs_SetDirectionPin(&Gpio, MIOLED1, 1);
//使能指定引脚输出:0 禁止输出使能,1 使能输出
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED0, 1);
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED1, 1);

while (1) {
XGpioPs_WritePin(&Gpio, MIOLED0, 0x0); //向指定引脚写入数据:0 或 1
XGpioPs_WritePin(&Gpio, MIOLED1, 0x0);
sleep(1); //延时 1 秒
XGpioPs_WritePin(&Gpio, MIOLED0, 0x1);
XGpioPs_WritePin(&Gpio, MIOLED1, 0x1);
sleep(1);
}
return XST_SUCCESS;
}

在这里插入图片描述
在这里插入图片描述

下载验证

右键选择 gpio_mio 工程,在弹出的菜单中选择 Run as-> Launch on Hardware
在这里插入图片描述
在这里插入图片描述
完成比完美重要!!!
学习记录,侵权联系删除
来源:正点原子

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亲测无限坐席在线客服系统源码/二开版/基于ThinkPHP+搭建教程

源码简介: 亲测了一款实用的无限坐席在线客服系统源码,这可是基于ThinkPHP框架开发的二开版哦!里面还附带了一份超详细的搭建教程。 安装过程简直不能更简单,只需一键操作,启动两个端口就搞定了。而且,它…

动态库的加载全过程

区分一组概念:逻辑地址,虚拟地址,物理地址。 逻辑地址:是我们的代码在编译过程,编译器帮对每一条代码所生成的指令所编写的地址。 物理地址:当程序被放入到内存中时,内存与每一条指令所对应的…

回执单识别-银行回单识别API-文字识别OCR API

银行回单是一种由银行提供的交易凭证,记录了账户资金的交易明细。它通常包括存款、取款、转账、汇款、支付等各种类型的资金往来信息。银行回单可以是纸质的,也可以是电子版的,内容详尽记录了交易的相关信息,具有法律效力&#xf…

CSS 效果:实现动态展示双箭头

最近写了一段 CSS 样式,虽然不难,但实现过程比较繁琐。这个效果结合了两个箭头,一个突出,一个内缩,非常适合用于步骤导航或选项卡切换等场景。样式不仅仅是静态的,还可以通过点击 click 或者 hover 事件&am…

【机器学习(五)】分类和回归任务-AdaBoost算法

文章目录 一、算法概念一、算法原理(一)分类算法基本思路1、训练集和权重初始化2、弱分类器的加权误差3、弱分类器的权重4、Adaboost 分类损失函数5、样本权重更新6、AdaBoost 的强分类器 (二)回归算法基本思路1、最大误差的计算2…

JavaSE——面向对象2:方法的调用机制、传参机制、方法递归、方法重载、可变参数、作用域

目录 一、成员方法 (一)方法的快速入门 (二)方法的调用机制(重要) (三)方法的定义 (四)注意事项和使用细节 1.访问修饰符(作用是控制方法的使用范围) 2.返回的数据类型 3.方法名 4.形参列表 5.方法体 6.方法调用细节说明 (五)传参机制 1.基本数据类型的传参机制 …

C++模拟实现vector容器【万字模拟✨】

更多精彩内容..... 🎉❤️播主の主页✨😘 Stark、-CSDN博客 本文所在专栏: 学习专栏C语言_Stark、的博客-CSDN博客 项目实战C系列_Stark、的博客-CSDN博客 数据结构与算法_Stark、的博客-CSDN博客 座右铭:梦想是一盏明灯&#xff…

idea2023-快速搭建一个本地tomcat的javaWeb项目(从0到1保姆教学)

前言 如何在新版idea中搭建一个javaWeb项目,并且应用在物理的tomcat中,本文将进行从零到一,完成搭建步骤,以及相关注意事项的讲解。 为什么需要配置tomcat? 我们开发的javaWeb项目,最后都需要打包部署到真正…

了解华为计算产品线,昇腾的业务都有哪些?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 随着 ChatGPT 的现象级爆红,它引领了 AI 大模型时代的深刻变革,进而造成 AI 算力资源日益紧缺。与此同时,中美贸易战的持续也使得 AI 算力国产化适配成为必然趋势。 …

Flet介绍:平替PyQt的好用跨平台Python UI框架

随着Python在各个领域的广泛应用,特别是在数据科学和Web开发领域,对于一个简单易用且功能强大的用户界面(UI)开发工具的需求日益增长。传统的Python GUI库如Tkinter、PyQt虽然功能强大,但在易用性和现代感方面略显不足…

ZYNQ:Hello World 实验-PS-串口打印“Hello World”

Hello World 实验目的 PS-串口打印“Hello World” 创建 Vivado 工程 设置工程名为“hello_world” 使用 IP Integrator 创建 Processing System 搜索栏中键入“zynq”,找到并双击“ZYNQ7 Processing System” 串口配置 配置完成后的 ZYNQ7 Processing Sys…

微信小程序 图片的上传

错误示范 /*从相册中选择文件 微信小程序*/chooseImage(){wx.chooseMedia({count: 9,mediaType: [image],sourceType: [album],success(res) {wx.request({url:"发送的端口占位符",data:res.tempFiles[0].tempFilePath,method:POST,success(res){//请求成功后应该返…

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有:1. 会引起其底层空间改变的操作,都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下,g编译器对迭代器失效的检测并不是非常…

Python从入门到高手3.5节-程序实战之最小值算法

目录 3.5.1 算法思路 3.5.2 构造随机数 3.5.3 条件控制语句 3.5.4 完整的代码实现 3.5.5 大神薯条老师 3.5.1 算法思路 算法原理很简单,先任取两个数进行比较,以计算两个数中的最小值: 假设得到的最小值为min_,再用这两个数…

PaddleDetection 自定义训练目标检测

PaddleDetection是一个基于PaddlePaddle的目标检测端到端开发套件,在提供丰富的模型组件和测试基准的同时,注重端到端的产业落地应用,通过打造产业级特色模型|工具、建设产业应用范例等手段,帮助开发者实现数据准备、模型选型、模…

制造企业各部门如何参与生产成本控制与管理?

​国内制造业的分量可不轻,从日常生活用品到高端工业设备,中国制造几乎涵盖了各个领域。 不过很多制造业企业在管理方面确实存在一些难题:成本控制不容易,产品质量并不稳定,生产周期也常常较长。 一、中国制造业生产管…

基于SpringBoot+Vue+MySQL的考勤管理系统

系统展示 管理员界面 用户界面 系统背景 随着企业规模的扩大和管理的精细化,传统的考勤方式已经无法满足现代企业的需求。纸质签到、人工统计不仅效率低下,还容易出错。因此,开发一套基于SpringBootVueMySQL的考勤管理系统显得尤为重要。该系…

基于微信小程序医院应急设备管理系统(源码+定制+解答)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

通过ChatGPT 提示词设定60种不同的写作风格

为 ChatGPT 编写正确的提示可以对您获得的响应类型产生很大影响。 您选择的写作风格会影响答案的语气、深度和清晰度。 本指南将帮助您发现 60 多种不同的写作风格,您可以与 ChatGPT 一起使用,以获得更多个性化 ChatGPT Prompt 中的写作风格是什么? ChatGPT 提示中的写作…

html空单元格的占位

先上代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title></head><body> <H1>我的WEB页面</H1><table border"2px" bgcolor"#7fffd4&…