TB-RX671+GNURX+Cplusplus sample program

こんにちは。NoMaYです。

TB-RX671 の GNURX & C++ & RXスマートコンフィグレータ & FreeRTOS という組み合わせのサンプルプログラム(e2 studioプロジェクト)です。現在、以下のものがあります。(GitHubにも置いています。) なお、C++と言っても、以前に投稿したTB-RX65N/RX130/RX231(とRX72N Envision Kit)でのCS+のサンプルプログラムのCソースコードと内容は殆ど同じだったり、また、FreeRTOSと言っても、メインタスクを1つ作っているだけだったり、というものです。(今回、FreeRTOSのRenesas RX Simulatort対応ポートレイヤは独自対応版(野良犬ならぬ野良ポートレイヤです)、FreeRTOSのカーネルソースはV10.4.4、となっています。)

デバッグコンソール出力 (Renesas RX Simulator版あり)
デバッグコンソール入力 (Renesas RX Simulator版あり)
デバッグコンソール入力確認 (Renesas RX Simulator版あり)
UART出力
UART入力
UART入力確認

GitHubのリポジトリ
github.com/NoMaY-jp/RX_SmartConfigurator_examples_RXTB_GNURX/tree/cafe_rene


デバッグコンソール出力

10_DebugConsole_printf/

void main_task(void *pvParameters)
{
    INTERNAL_NOT_USED(pvParameters);

    LED0 = LED_ON;

    for (;;)
    {
        printf( "Hello World\r\n" );

        vTaskDelay( pdMS_TO_TICKS( 1000 ) );
        LED0 = ~LED0;

        vTaskDelay( pdMS_TO_TICKS( 1000 ) );
        LED0 = ~LED0;
    }

    /* vTaskDelete(NULL); */
}

実行例: (上: 実機版、下: シミュレータ版)



デバッグコンソール入力

20_DebugConsole_getchar/

void main_task(void *pvParameters)
{
    INTERNAL_NOT_USED(pvParameters);

    char c;

    for (;;)
    {
        printf( "Please enter a character:\r\n" );

        c = getchar();

        printf( "\r\nNow %c is entered.\r\n\r\n", c );
    }

    /* vTaskDelete(NULL); */
}

実行例: (上: 実機版、下: シミュレータ版)



デバッグコンソール入力確認

21_DebugConsole_getchar_ready/

void main_task(void *pvParameters)
{
    INTERNAL_NOT_USED(pvParameters);

    char c;
    int i;

    for (;;)
    {
        printf( "Please enter a character:\r\n" );

        for (i = 0; i < 3; i++)
        {
            vTaskDelay( pdMS_TO_TICKS( 1000 ) );

            if (is_getchar_ready())
            {
                c = getchar();
                printf( "\r\nYeah, %c is entered.\r\n\r\n", c );

                vTaskDelay( pdMS_TO_TICKS( 1000 ) );

                break;
            }
        }
    }

    /* vTaskDelete(NULL); */
}

実行例: (上: 実機版、下: シミュレータ版)



UART出力

30_UART_Printf/

U_CONFIG_UART_PRINTF_IMPL(  SCI1, 128 /* transmit buffer size */ );

void main_task(void *pvParameters)
{
    INTERNAL_NOT_USED(pvParameters);

    LED0 = LED_ON;

    for (;;)
    {
        Printf( SCI1, "Hello World\r\n" );

        vTaskDelay( pdMS_TO_TICKS( 1000 ) );
        LED0 = ~LED0;

        vTaskDelay( pdMS_TO_TICKS( 1000 ) );
        LED0 = ~LED0;
    }

    /* vTaskDelete(NULL); */
}

実行例: (9600bpsです。)


UART入力

40_UART_Getchar/

U_CONFIG_UART_PRINTF_IMPL(  SCI1, 128 /* transmit buffer size */ );
U_CONFIG_UART_GETCHAR_IMPL( SCI1, 128 /* receive ring buffer size */ );

void main_task(void *pvParameters)
{
    INTERNAL_NOT_USED(pvParameters);

    char c;

    for (;;)
    {
        Printf( SCI1, "Please enter a character:\r\n" );

        c = Getchar( SCI1 );

        Printf( SCI1, "\r\nNow %c is entered.\r\n\r\n", c );
    }

    /* vTaskDelete(NULL); */
}

実行例: (9600bpsです。)


UART入力確認

41_UART_Getchar_Ready/

U_CONFIG_UART_PRINTF_IMPL(  SCI1, 128 /* transmit buffer size */ );
U_CONFIG_UART_GETCHAR_IMPL( SCI1, 128 /* receive ring buffer size */ );

void main_task(void *pvParameters)
{
    INTERNAL_NOT_USED(pvParameters);

    char c;
    int i;

    for (;;)
    {
        Printf( SCI1, "Please enter a character:\r\n" );

        for (i = 0; i < 3; i++)
        {
            vTaskDelay( pdMS_TO_TICKS( 1000 ) );

            if (Is_Getchar_Ready( SCI1 ))
            {
                c = Getchar( SCI1 );
                Printf( SCI1, "\r\nYeah, %c is entered.\r\n\r\n", c );

                vTaskDelay( pdMS_TO_TICKS( 1000 ) );

                break;
            }
        }
    }

    /* vTaskDelete(NULL); */
}

実行例: (9600bpsです。)

 

Anonymous