EFM32片內外設 — DWT

來源:互聯網
上載者:User

問一個問題,如果需要測量一個函數的執行時間,一般使用什麼辦法?我想各位看官應該都有自己的方法吧。

那我自己來說,只要有示波器,我肯定使用GPIO翻轉,然後用示波器測量的方法。如果沒有示波器,則使用Systick中的Count或則是定時器的Count來計數的方法。但是經過好友的提醒,原來Cortex-M3中還有另外一個方法。

大家都應該知道Cortex-M3中有很多的調試組件,什麼ITM,ETM,DWT等等。如果可以的話,您看看DWT的寄存器,就可以發現,原來DWT(Data Watchpoint and Trace),中有一個CYCCNT。周期計數器。

Cortex-M3核心的調試組件,如要要詳細說,還是需要一些技術功底的。但是秉承拿來主義,我們先學會如何去使用這樣的一個功能,常式代碼如下:

#include "efm32.h"
#include "em_emu.h"
#include "em_cmu.h"
#include "em_chip.h"

unsigned int time;

void main(void)
{
    CHIP_Init();
    /* Enable DWT */
    CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
    /* Make sure CYCCNT is running */
    DWT->CTRL |= 1;
    while(1)
    {
        time = DWT->CYCCNT;
        unsigned int delay = 1000;
        while(delay--);
        time = DWT->CYCCNT - time;
    }
}

PS:有關的參考資料,可以從這裡下:

http://download.csdn.net/detail/efm32/5674463

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.