処理時間測定

処理時間測定

// Systickレジスタ
#define STK_CTRL *((volatile unsigned long *)0xE000E010)
#define STK_LOAD *((volatile unsigned long *)0xE000E014)
#define STK_VAL  *((volatile unsigned long *)0xE000E018)

    STK_LOAD    = 0x00ffffff;  // リロード値に最大値を設定, 24ビットダウンカウンタ
    STK_VAL     = 0x00000000;  // カウンタ値にリロード値を設定
    STK_CTRL    = 0x00000004;  // コアクロックを選択, 割り込みなし
    STK_CTRL   |= 0x00000001;  // カウンタ動作許可

    wait_ms(1);

    temp0 = STK_VAL;   // start
    // 測定対象の処理
    temp1 = STK_VAL;   // end

    if (temp0 >= temp1) {
        time = temp0 - temp1;
        printf ("time:%2d[clk]\r\n", time);
    } else {
        printf ("time:error!\r\n");
    }


Please log in to post comments.