nRF printf


デバッグに表示できるというのは便利というか、無いとつらいので、整理してみた。

\examples\peripheral\blinkyを自身のmyprojectsなどのフォルダーにコピー。

\examples\myprojects\8_blinky_printf\pca10056\blank\sesの

blinky_pca10056.emProjectをダブルクリックして立ち上げてくる。

flash_placement.xmlの中のsize 0x04を削除してビルトして、動作させる所まで実施する。

mainのwhileの中にprintfの関数で文字列を書いてみる。

    while (true)

    {

        for (int i = 0; i < LEDS_NUMBER; i++)

        {

            printf("This is a test.\n\r");

            bsp_board_led_invert(i);

            nrf_delay_ms(500);

        }

 

このままビルトするとエラーが出た。

D:/Program Files/SEGGER/SEGGER Embedded Studio for ARM 7.10a/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(prinops.o): in function `vfprintf_l':

prinops.c:(.text.libc.vfprintf_l+0x12): undefined reference to `__SEGGER_RTL_X_file_bufsize'

・・・

この手のエラーは、Project Itemのproject (上から2番目)を右クリック、Optionsを選択し、Commonにプルダウンで選んであげて、Library- Library I/Oを開き、RTTを選ぶ。かならずOKを押して窓を閉じるようにする。



これでビルトをしてみるとこの手のエラーは、Project Itemのproject (上から2番目)を右クリック、Optionsを選択し、Debugにプルダウンがなっているのを確認し、Library- Library I/Oを開き、RTTを選ぶ。かならずOKを押して窓を閉じるようにする。

するとビルトするとエラーは出ない。ビルトできたらデバッグを走らせてみる。
一度停止するが、F5を押して走らせてやると、
Debug Terminalが開いて、そこにprintfの内容表示される。これは、デバッグモードの時にだけ出す事ができる。  

次にwhileの外でテスト用の変数を型違いで定義。
whileの中にprintfで追記してやる。  

/* Test variables */
    uint8_t int_number=5;
    float pi=3.141592;

    /* Toggle LEDs. */
    while (true)
    {
        for (int i = 0; i < LEDS_NUMBER; i++)
        {
            printf("This is a test.\n\r");
            printf("Integer=%d\n\r",int_number);
            printf("float=%f\n\r",pi);
            bsp_board_led_invert(i);
            nrf_delay_ms(500);
        }
    }


floatだけ表示されない。Optionsを選択し、Commonにプルダウンがなっているのを確認し、Printf/Scanfを選択して、Printf floating Point supportedをダブルクリックして窓を開いて、Floatを選択、OKを押していって窓を閉じる

今度は、floatが表示できるようになる。


次にUARTの機能をこのblinkに足していく。











コメント

このブログの人気の投稿

Attiny85とAQM0802A(LCD)のI2C接続

CH9329で日本語キーボード109で正しく表示する方法