MyLibs 1.0 Расширенные библиотеки для STM32

Loading...
Searching...
No Matches
Time measurement
My Libs » Debug Tools

Библиотека для измерения времени/тиков между событиями More...

Collaboration diagram for Time measurement:

## Macros
#define | BenchTime_Init()
#define | BenchTime_Start(channel, ticks, tick_period)
#define | BenchTime_End(channel, ticks)
#define | BenchTime_GetMin(channel)
#define | BenchTime_GetMax(channel)
#define | BenchTime_GetAverage(channel)
#define | BenchTime_GetCount(channel)
#define | BenchTime_GetLast(channel)
#define | BenchTime_ResetStats(channel)

## Detailed Description

Библиотека для измерения времени/тиков между событиями

Поддерживает:

- Многоканальные измерения (несколько независимых таймеров)
- Платформонезависимый интерфейс
- Измерение в тиках или временных единицах
- Статистику измерений (мин/макс/среднее)
- Настраиваемый размер тиков для каждого канала

Параметры для конфигурации:

- BENCH_TIME_ENABLE - Включить бенч времени
- BENCH_TIME_MAX_CHANNELS - Максимальное количество каналов измерения (по умолчанию 8)

Пример использования:
  #include "bench_time.h"
  // Инициализация
  BenchTime_Init();
  // Измерение с SysTick
  BenchTime_Start(0, HAL_GetTick, 0xFFFFFFFF);
  some_function();
  uint32_t time = BenchTime_End(0, HAL_GetTick);
  // Измерение с TIM2 (16-бит)
  BenchTime_Start(1, TIM2->CNT, 0xFFFF);
  fast_function();
  uint32_t time2 = BenchTime_End(1, TIM2->CNT);
  // Измерение с DWT цикловым счетчиком
  BenchTime_Start(2, DWT->CYCCNT, 0xFFFFFFFF);
  critical_function();
  uint32_t cycles = BenchTime_End(2, DWT->CYCCNT);
  // Многоканальное измерение
  BenchTime_Start(0, HAL_GetTick, 1000); // общее время
  BenchTime_Start(1, TIM3->CNT, 500); // часть 1
  // ... код 1
  uint32_t part1 = BenchTime_End(1, TIM3->CNT);
  BenchTime_Start(2, TIM4->CNT, 200); // часть 2
  // ... код 2
  uint32_t part2 = BenchTime_End(2, TIM4->CNT);
  uint32_t total = BenchTime_End(0, HAL_GetTick); // общее время
  // Статистика
  uint32_t min_time = BenchTime_GetMin(0);
  uint32_t max_time = BenchTime_GetMax(0);
  uint32_t avg_time = BenchTime_GetAverage(0);
  uint32_t count = BenchTime_GetCount(0);
  bench_time.h
  Заголовочный файл для измерения времени между событиями

## Macro Definition Documentation

## ◆ BenchTime_Init

#define BenchTime_Init | ( |  | ) |

Definition at line 241 of file bench_time.h.

## ◆ BenchTime_Start

#define BenchTime_Start | ( |  | channel,
|  |  | ticks,
|  |  | tick_period )

Value:
0

Definition at line 242 of file bench_time.h.

## ◆ BenchTime_End

#define BenchTime_End | ( |  | channel,
|  |  | ticks )

Value:
0

Definition at line 243 of file bench_time.h.

## ◆ BenchTime_GetMin

#define BenchTime_GetMin | ( |  | channel | ) |

Value:
0

Definition at line 244 of file bench_time.h.

## ◆ BenchTime_GetMax

#define BenchTime_GetMax | ( |  | channel | ) |

Value:
0

Definition at line 245 of file bench_time.h.

## ◆ BenchTime_GetAverage

#define BenchTime_GetAverage | ( |  | channel | ) |

Value:
0

Definition at line 246 of file bench_time.h.

## ◆ BenchTime_GetCount

#define BenchTime_GetCount | ( |  | channel | ) |

Value:
0

Definition at line 247 of file bench_time.h.

## ◆ BenchTime_GetLast

#define BenchTime_GetLast | ( |  | channel | ) |

Value:
0

Definition at line 248 of file bench_time.h.

## ◆ BenchTime_ResetStats

#define BenchTime_ResetStats | ( |  | channel | ) |

Definition at line 249 of file bench_time.h.