0

私は Xilinx Vivado と Zybo の新しいユーザーです。私は以下のリンクのチュートリアルに従いました: http://www.dbrss.org/zybo/tutorial1.html そしてそれはうまくいきます。

次に、GPIO 用のチャネルを追加し、それをスイッチに接続しました。ここに.cファイルがあります:

/* Borrowed from ZynqBook Tutorials */

/* Include Files */
#include "xparameters.h"
#include "xgpio.h"
#include "xstatus.h"
#include "xil_printf.h"

/* Definitions */
#define GPIO_DEVICE_ID  XPAR_AXI_GPIO_0_DEVICE_ID   /* GPIO device that LEDs are connected to */
#define LED 0x00                                    /* Initial LED value - 0000 */
#define LED_DELAY 10000000                          /* Software delay length */
#define LED_CHANNEL 1                               /* GPIO port for LEDs */
#define SW_CHANNEL 2
#define printf xil_printf                           /* smaller, optimized printf */

XGpio Gpio;                                         /* GPIO Device driver instance */

int LEDOutputExample(void)
{

    //volatile int Delay;
    int Status;
    int led = LED; /* Hold current LED value. Initialize to LED definition */

        /* GPIO driver initialization */

        Status = XGpio_Initialize(&Gpio, GPIO_DEVICE_ID);
        if (Status != XST_SUCCESS) {
            return XST_FAILURE;
        }

        /*Set the direction for the LEDs to output. */
        XGpio_SetDataDirection(&Gpio, LED_CHANNEL, 0x00);
        XGpio_SetDataDirection(&Gpio, SW_CHANNEL, 0x0F);

        /* Loop forever blinking the LED. */
            while (1) {
                /* Write output to the LEDs. */
                led = XGpio_DiscreteRead(&Gpio, SW_CHANNEL);
                XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, led);

                /* Flip LEDs. */
                //led = ~led;


                /* Wait a small amount of time so that the LED blinking is visible. */
                //for (Delay = 0; Delay < LED_DELAY; Delay++);
            }

        return XST_SUCCESS; /* Ideally unreachable */
}

/* Main function. */
int main(void){

    int Status;

    /* Execute the LED output. */
    Status = LEDOutputExample();
    if (Status != XST_SUCCESS) {
        xil_printf("GPIO output to the LEDs failed!\r\n");
    }

    return 0;
}

しかし、スイッチを変更すると、LEDは初期状態のままです。どうしたの?ありがとう!

4

1 に答える 1

0

最初に、ハードウェア部分を変更し、スイッチ用に新しい AXi_GPIO IP コアを追加することを忘れないでください (現時点では、LED 専用の 1 つしかありません)。点滅するLEDを取得しますか?あなたのコードには多くの問題があります。SDK で vivado を使用する方法の詳細を読む必要があります。SDK から出力を追加するだけでは不十分です。xilinx vivado のチュートリアル ブックを読むことを強くお勧めします。それはすべての基本を非常によく説明しています。

于 2016-01-13T16:10:00.703 に答える