55 lines
1.3 KiB
Markdown
55 lines
1.3 KiB
Markdown
|
# bsp_dwt
|
||
|
|
||
|
DWT是stm32内部的一个"隐藏资源",他的用途是给下载器提供准确的定时,从而为调试信息加上时间戳.并在固定的时间间隔将调试数据发送到你的xxlink上.
|
||
|
|
||
|
## 常用功能
|
||
|
|
||
|
### 计算两次进入同一个函数的时间间隔
|
||
|
|
||
|
```c
|
||
|
static uint32_t cnt;
|
||
|
float deltaT;
|
||
|
|
||
|
deltaT=DWT_GetDeltaT(&cnt);
|
||
|
```
|
||
|
|
||
|
### 计算执行某部分代码的耗时
|
||
|
|
||
|
```c
|
||
|
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;
|
||
|
```
|
||
|
|
||
|
我们还提供了一个宏用于调试计时:
|
||
|
|
||
|
```c
|
||
|
#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类型的变量,并将你要执行的代码写入第二个参数:
|
||
|
|
||
|
```c
|
||
|
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;
|
||
|
```
|