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

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

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

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

Комментарии (9)

RSS свернуть / развернуть
Способ вполне обычный. Единственная непонятка из текста — это нафига там упомянуто прерывание по таймеру, хотя если чуток раскинуть мозгом (наступить на мину допустим...) то можно догадаться что речь идет о той функции, время выполнения которой вы и замеряли. но я могу и ошибаться…
0
Я разрешал работу таймера несолько ранее чем заканчивалась функция в конце которой разрешалось прерывание.
В итоге таймер успевал досчитывать и остановится до разрешения прерывания. И итоге прерыванию не на что было срабатывать.
0
Я уже это понял. Просто из написанной Вами фразы это явно не видно и ее можно трактовать по разному.
0
Не будет ли ошибки от того, что забыли отнять единицу от прескалера?
Таймер то считается как Ft = Fosc / (Prescaler + 1).
При 12МГц это почти 10%
+2
забыл совсем про -1, видел в даташите, хотел вернутся но блин чёт забыл.
Надо будет разобраться зачем он там нужен.
0
Звиняйте, панове.
О чем топик? Мой танк (мозг) не вьезжает в этот «дворик».
Топикастер ты хоть поподробней опиши — Кто, Что, Где, Почём? И главное — сколько в одни руки дают? ;)
+2
  • avatar
  • Noi
  • 07 марта 2013, 19:01
Правильно писать — ОпределениЕ времЕНИ, а не Определения время…
0
не забываем отключить прерывание в ф-ции))
0
Сомнительный способ, потому как не всегда будет работать. Так как таймер может и не останавливаться при остановке ядра.
Для измерения времени исполнения лучше подходит DWT.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.