Определения время выполнения функции с помощью таймера.

Берём значение предделителя для тймера.

 Prescaler =  SystemCoreClock / 1000000;//Значения предделителя для формирование микросекндной задержки.

Запускаем таймер и после каждой вызванной функции смотрим в отладчике на значение регистра TIMx->CNT/.
Если SystemCoreClock не врёт то получаем время выполнения функции в микросекундах.
Я TIM_Cmd(TIMx,ENABLE); Разместил в начале функции и не мог понять, куда у меня девается прерывание по таймеру. Оказывается таймер пересчитывается за время пока доходит очередь до разрешения прерывания по таймеру.