首页 > 其他 > 详细

arm GPIO

时间:2020-05-02 23:54:11      阅读:87      评论:0      收藏:0      [点我收藏+]

1. 新建 bd 文档以及ZYNQ处理器IP调用

添加ZYNQ处理器IP。勾选串口1用于测试打印。

技术分享图片

技术分享图片

添加两个AXI_GPIO,其中axi_gpio_0用于输入,axi_gpio_1用于输出。

技术分享图片

输入为1位,输出4位。

技术分享图片技术分享图片

点击自动连接,勾选所有模块。

技术分享图片

自动连接之后,系统自动生成了复位控制模块和AXI总线互联模块。

技术分享图片

Run Block Automation。自动连接对外管脚。

Ctrl+S保存。

Generate Output Products。

Create HDL Wrapper。

Open Elaborated Design。

技术分享图片

Generate Bitstream。

File→Export→Export Hardware(Include bitstream)。

2. SDK下的代码开发

File→Launch SDK。

File→New→Application Project。

工程名gpio_input_output,模板helloworld。

编辑helloworld.c

#include <stdio.h>
#include "platform.h"
#include "xparameters.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xgpio.h"
#include <unistd.h> // usleep()
#include <stdbool.h>  // bool

#define LED_DEVICE_ID          XPAR_AXI_GPIO_1_DEVICE_ID
#define KEY_DEVICE_ID          XPAR_AXI_GPIO_0_DEVICE_ID

XGpio LEDInst;
XGpio KEYInst;

u8 key_value_pre=0;
u8 key_value_now=0;
int main()
{
    init_platform();
    int status;
    status = XGpio_Initialize(&KEYInst, KEY_DEVICE_ID); // initial KEY
    if(status != XST_SUCCESS) return XST_FAILURE;
    status = XGpio_Initialize(&LEDInst, LED_DEVICE_ID);  // initial LED
    if(status != XST_SUCCESS)return XST_FAILURE;
    XGpio_SetDataDirection(&KEYInst, 1, 1); // set KEY IO direction as in
    XGpio_SetDataDirection(&LEDInst, 1, 0); // set LED IO direction as out
    XGpio_DiscreteWrite(&LEDInst, 1, 0x0);// at initial, all LED turn off
    printf(">>> Press PL KEY1 ~ KEY4 one by one, and check the PL LED1 ~ LED4\n");
    while(1)
    {
        usleep(100000); // 0.1s sleep, to debounce, in common, the meta-state will sustain no more than 20ms
        key_value_pre=key_value_now;
        key_value_now= XGpio_DiscreteRead(&KEYInst, 1) & 0x0F;
        XGpio_DiscreteWrite(&LEDInst, 1, key_value_now);
        if(key_value_pre!=key_value_now)  printf("key state_changed!\n");
    }

    cleanup_platform();
    return 0;
}

功能:按下按键,输入为低电平,输出低电平使LED熄灭。

Debug Configurations

技术分享图片

配置串口,开始Debug。

现象如下:

技术分享图片

 

同时串口打印提示信息。

技术分享图片

arm GPIO

原文:https://www.cnblogs.com/dingdangsunny/p/12820126.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!