infantry_gimbal/bsp/dwt/bsp_dwt.md

1.3 KiB

bsp_dwt

DWT是stm32内部的一个"隐藏资源",他的用途是给下载器提供准确的定时,从而为调试信息加上时间戳.并在固定的时间间隔将调试数据发送到你的xxlink上.

常用功能

计算两次进入同一个函数的时间间隔

static uint32_t cnt;
float deltaT;

deltaT=DWT_GetDeltaT(&cnt);

计算执行某部分代码的耗时

float start,end;
start=DWT_DetTimeline_ms();

// some proc to go... 
for(uint8_t i=0;i<10;i++)
 foo();

end = DWT_DetTimeline_ms()-start;

我们还提供了一个宏用于调试计时:

#define TIME_ELAPSE(dt, code)                    \
    do                                           \
    {                                            \
        float tstart = DWT_GetTimeline_s();      \
        code;                                    \
        dt = DWT_GetTimeline_s() - tstart;       \
        LOGINFO("[DWT] " #dt " = %f s\r\n", dt); \
    } while (0)

传入一个float类型的变量,并将你要执行的代码写入第二个参数:

    static float my_func_dt;
    TIME_ELAPSE(my_func_dt,
                Function1(vara);
                Function2(some, var);
                Function3(your,param);
                 // something more
                 );
    // my_func_dt can be used for other purpose then;