PSoC 62S2 Wi-Fi BTパイオニアキットでGPIO出力によりユーザLED「P1_5」を点灯し、GPIO入力によりピン番号「P12_3 」「 P7_6」からデータを入力します。

GPIO入出力アプリの作成

サンプルコード「Hello World」をベースにし、GPIO入力機能を追加してGPIO入出力アプリ「ConnectTest1」を作成します。「infineonのModusToolboxの設定」に従い、プロジェクト名「ConnectTest1」として作成します。

作成したコードを次のように変更します。なお、cyhal_gpio_init関数の詳細仕様については「Hardware Abstraction Layer (HAL)」を参照します。

main.c

    ・・・

/* Timer object used for blinking the LED */
cyhal_timer_t led_blink_timer;

 bool      read_vald10,read_vald9;

    ・・・

    /* Initialize the User LED */
    result = cyhal_gpio_init(CYBSP_USER_LED, CYHAL_GPIO_DIR_OUTPUT,
                             CYHAL_GPIO_DRIVE_STRONG, CYBSP_LED_STATE_OFF);

    /* GPIO init failed. Stop program execution */
    if (result != CY_RSLT_SUCCESS)
    {
        CY_ASSERT(0);
    }

    // Initialize pin P12_3 as an input
    result = cyhal_gpio_init(P12_3, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_NONE, false);
    if (result != CY_RSLT_SUCCESS)
    {
        CY_ASSERT(0);
    }
    // Initialize pin P7_6 as an input
    result = cyhal_gpio_init(P7_6, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_NONE, false);
    if (result != CY_RSLT_SUCCESS)
    {
        CY_ASSERT(0);
    }

    ・・・

        /* Check if timer elapsed (interrupt fired) and toggle the LED */
        if (timer_interrupt_flag)
        {
            /* Clear the flag */
            timer_interrupt_flag = false;

            /* Invert the USER LED state */
            cyhal_gpio_toggle(CYBSP_USER_LED);

            // Read the logic level on the input pin
            read_vald10 =cyhal_gpio_read(P12_3);
            read_vald9 =cyhal_gpio_read(P7_6);

            printf("d10: %d d9:%d\r\n",read_vald10,read_vald9);

    ・・・

GPIO入出力アプリの実行

作成したGPIO入出力アプリ「ConnectTest1」を実行し、ピン番号「P12_3 」、または「 P7_6」に3.3Vを接続して入力が「1」になることを確認します。