当前位置: 首页 > news >正文

千博医院网站模板中小企业管理培训课程

千博医院网站模板,中小企业管理培训课程,广州冼村凶杀案验尸图片,网页设计与制作txt实现功能:使用 MicroBlaze软核,配置GPIO用拨码开关控制LED灯 Vivado版本:2018.3 目录 引言 vivado部分: 一、配置GPIO 二、生成HDL文件编译 SDK部分: 一、导出硬件启动SDK 二、新建应用程序工程 三、编写程序代…

实现功能:使用 MicroBlaze软核,配置GPIO用拨码开关控制LED灯

Vivado版本:2018.3

目录

引言

vivado部分:

一、配置GPIO

二、生成HDL文件编译

SDK部分:

一、导出硬件启动SDK

二、新建应用程序工程

三、编写程序代码

引言

        在“  MicroBlaze软核开发(一):Hello World  ”中通过串口打印 Hello World 的例子成功跑通了 Microblaze 软核,对相关设计步骤作了一个介绍。本文将基于上一节的工程,继续介绍如何使用 Microblaze 软核,配置GPIO,用4个拨码开关对应控制4个LED灯。 

vivado部分:

一、配置GPIO

       (1)点击添加按钮,搜索GPIO,双击 AXI GPIO 添加IP ,如图所示

        (2)双击GPIO模块进行配置:因为要实现4个拨码开关对应控制4个LED灯,所以LED为4位输出,拨码开关为4位输入;又因为后续输入输出需要分开设置通道,故将GPIO1通道作为LED灯的4位输出,将GPIO2通道作为拨码快关的4位输入。

        (3)点击“运行自动连接”,勾选全部点击OK

        (4)点击“自动布局”,最后得到电路如下,右下角为添加的gpio部分,这里把 GPIO 模块的通道1引脚命名为“gpio_led”,把通道2引脚命名为“gpio_switch” (后面会用到,注意!)

二、生成HDL文件编译

        这一部分和 “  MicroBlaze软核开发(一):Hello World  ” 中相同,不再赘述

        (1)到src栏右键设计块,生成HDL包装文件

        (2)依次进行:Run Synthesis 综合、Run implementation 部署 

        (3)再配置管脚:需要配置的管脚如图所示,根据开发板情况自行配置

        (4)最后 Generate Bitstream 生成比特流文件

SDK部分:

一、导出硬件启动SDK

         这一部分和 “  MicroBlaze软核开发(一):Hello World  ” 中相同,不再赘述

        (1)File -> Export -> Export Hardware 导出硬件: 注意勾选“Include bitstream”再导出

        (2)File -> Launch SDK 启动SDK:保持默认点击OK。

二、新建应用程序工程

        (1)因为是基于(一)的工程进行,会发现已有hello的工程,这里打开该工程 bsp 文件夹(Board Support Package文件夹,封装了特定硬件平台如开发板、FPGA等所需的软件支持)再打开 system.mss 文件,里面会根据 Vivado 内的软核设计提供驱动程序 (Vivado给添加了uart和gpio,可以发现它就提供了uart 和 gpio 的驱动程序的工程模板),选择axi_gpio 的工程创建。

        (2)选择axi_gpio 的工程模板,他一共提供4个模板,这里选最基本的第一个即可。

        (3)打开生成的模板工程的.C文件,可以看到模板功能是使用 AXI GPIO 驱动 LED 灯,
其中LED灯为GPIO通道1的第0位

        (4)先分析运行模板的代码:(SDK中按住Ctrl再点击函数可以跳转查看函数定义,直接烧录并运行该模板程序的现象是LED的第0位循环亮灭)

/***************************** Include Files 包含头文件 *********************************/
#include "xparameters.h" 
#include "xgpio.h"
#include "xil_printf.h"/************************** Constant Definitions 常量定义 *****************************/
#define LED 0x01     //LED的gpio的方向:第0位为1
#define GPIO_EXAMPLE_DEVICE_ID  XPAR_GPIO_0_DEVICE_ID //获取的GPIO设备ID
#define LED_DELAY    10000000 //用于延时计数
#define LED_CHANNEL  1        //LED的gpio通道设为通道1/************************** Variable Definitions 变量定义 ****************************/
XGpio Gpio; //实例化XGpio名为GPIO/********************************** Main 主函数  *************************************/
int main(void)
{int Status;volatile int Delay;/**** GPIO初始化 ****/Status = XGpio_Initialize(&Gpio, GPIO_EXAMPLE_DEVICE_ID);if (Status != XST_SUCCESS) {xil_printf("Gpio Initialization Failed\r\n");return XST_FAILURE;}XGpio_SetDataDirection(&Gpio, LED_CHANNEL, ~LED); //设置LED的gpio方向,这里取反则仅第0位0,即只有第0位为输出/**** LED循环闪烁 ****/while (1) {XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, LED);   for (Delay = 0; Delay < LED_DELAY; Delay++);    //延时XGpio_DiscreteClear(&Gpio, LED_CHANNEL, LED);for (Delay = 0; Delay < LED_DELAY; Delay++);    //延时}return XST_SUCCESS;
}

 三、编写程序代码

        因为要实现4个拨码开关对应控制4个LED灯,所以代码需要进行修改:需要添加拨码开关GPIO的通道2,并将LED的GPIO设为通道1、方向设为输出;将switch的GPIO设为通道2、方向设为输入:

/**************************** Include Files 包含头文件 ********************************/
#include "xparameters.h"
#include "xgpio.h"
#include "xil_printf.h"/************************** Constant Definitions 常量定义 ****************************/
#define LED 0x00  //LED的gpio的方向:低四位全0表示,即全为输出
#define SW  0x0f  //switch的gpio的方向:低四位全1表示,即全为输出#define GPIO_EXAMPLE_DEVICE_ID  XPAR_GPIO_0_DEVICE_ID //获取GPIO设备ID(如果有两个GPIO模块需要再加一个ID,这里只有一个XPAR_GPIO_0模块)#define LED_CHANNEL 1 //LED的gpio通道为通道1
#define SW_CHANNEL  2 //switch的gpio通道为通道2/************************** Variable Definitions 变量定义 ****************************/
XGpio Gpio; //实例化XGpio名为GPIO
u32 data;   //定义u32类型变量data/********************************** Main 主函数  *************************************/
int main(void)
{/*** GPIO初始化 ***/int Status;Status = XGpio_Initialize(&Gpio, GPIO_EXAMPLE_DEVICE_ID);if (Status != XST_SUCCESS) {xil_printf("Gpio Initialization Failed\r\n");return XST_FAILURE;}XGpio_SetDataDirection(&Gpio, LED_CHANNEL, LED);   //设置LED通道的方向为输出XGpio_SetDataDirection(&Gpio, SW_CHANNEL, SW);     //设置Switch通道的方向为输入while (1) {data = XGpio_DiscreteRead(&Gpio, SW_CHANNEL);  //将switch的GPIO输入数据读取到dataXGpio_DiscreteWrite(&Gpio, LED_CHANNEL, data); //data数据输出给led的GPIO}return XST_SUCCESS;
}

        (6)修改结束进行烧录,再运行该程序。效果为4个拨码开关可以对应控制4个LED灯,到此GPIO的配置与简单使用介绍结束。

http://www.mmbaike.com/news/69762.html

相关文章:

  • 怎样在百度免费做网站外贸网站平台哪个好
  • 怎样做信息收费网站商丘网络推广外包
  • 做外贸出口的网站360优化大师安卓下载
  • 石家庄自适应网站建设谷歌seo课程
  • 在线ui设计网站设计师经常用的网站
  • 织梦网站如何做地区分站网站推广方式组合
  • 做酒吧设计的网站网站策划报告
  • 基于php的网站设计与实现seo网站搭建是什么
  • 网站开发招聘年薪网站关键词排名优化推广软件
  • 临平房产做网站的公司短视频推广策略
  • 档案网站 内容建设百度官网认证申请
  • 一个做网站的团队需要哪些公司模板建站
  • ppt哪个网站做的好友情链接购买
  • 湛江seo建站软文广告经典案例300字
  • 同城免费发布信息网宁波seo深度优化平台有哪些
  • 东莞企业做网站百度直播推广
  • 网站开发功能结构图思维导图vue seo优化
  • 做网站做哪个行业好宁波seo关键词费用
  • 男女做那种的视频网站公司企业网站建设方案
  • 高端网站开发设计手机怎么搭建网站
  • 域名查询站长工具南宁网站建设
  • 网站建设提供排名seo自然优化排名
  • 组态王如何做网站链接网站建站公司
  • 网上做赌博网站吗建立网站用什么软件
  • wordpress建立商业网站广州网页搜索排名提升
  • 网站的策划方案怎么写nba排名2021最新排名
  • 爱网站最新发布址种子搜索引擎torrentkitty
  • 学php到做网站要多久友情视频
  • 沈阳哪家做网站好厦门人才网app
  • 做网站最主要中国工商业联合会