Я хотел бы написать простой профилировщик для моего микроконтроллера STM32F100VE. Я видел, что могу включить time.h и на основе стандартных функций c я могу его использовать, но меня смутило _CLOCKS_PER_SEC_ 1000. Я не уверен, сработает ли этот подход или нет.
Как можно попытаться измерить время, затраченное функцией в приложении микроконтроллера?
Самым простым маневром для сложных функций является использование встроенных таймеров.
В зависимости от того, как вы их настроите, вы можете заставить их считать точное количество тактов, которое требуется для выполнения определенной функции. Просто прочитайте таймер перед вызовом функции, а затем еще раз после вызова функции.
Вам придется просмотреть ассемблерный код, чтобы узнать, сколько времени нужно снять таймер для вызовов чтения, но если это длинная функция или если вы не возражаете против пары тактов, тогда все в порядке.
Единственной ошибкой при преобразовании тактов обратно во время является возможная ошибка в частоте колебаний системных часов. Опять же, это будет незначительно для функций, выполнение которых требует значительного времени.
Похоже, в вашем случае вам нужно что-то около 30 Гц (30 кадров в секунду), что очень долго по сравнению с временным циклом тактовой частоты процессора.
Если это небольшая функция, вы можете просто посмотреть на разборку и посчитать инструкции.
Нужно ли вам использовать эту информацию и в вашем программном обеспечении, или она вам нужна только для целей отладки/разработки? Если это второй (я предполагаю, что это так, поскольку вашей основной целью является профилирование), простое переключение вывода в начале и в конце функции и измерение времени с помощью осциллографа может быть самым быстрым, простым и точным измерением. .
Владимир Краверо
Ахмед Салех
Спехро Пефхани
Владимир Краверо
Ахмед Салех
Владимир Краверо
Ахмед Салех
Джон Л
Воутер ван Оойен
Спехро Пефхани