Страницы

Страницы

воскресенье, 20 декабря 2015 г.

Измерение времени с помощью таймера

Если возникла необходимость измерения промежутка времени, например, длительности выполнения блока операций или интервала времени между двумя событиями, то логично привлечь к выполнению такой задачи один из имеющихся в микроконтроллере таймеров. Как именно производится измерение? А вот так – пример для блока операций:

TIM2->CR1 = 0; //остановка таймера
TIM2->CNT = 0; //сброс счетчика
TIM2->CR1 = 1; //перезапуск таймера
// блок операций, длительность выполнения которого
// необходимо измерить
TIM2->CR1 = 0; //остановка таймера

пример для интервала времени между двумя событиями

TIM2->CR1 = 0; //остановка таймера
TIM2->CNT = 0; //сброс счетчика
// ожидание момента наступления первого события, например,
// перехода LOW-HIGH на одном из выводов микроконтролера
TIM2->CR1 = 1; //перезапуск таймера
// ожидание момента наступления второго события, например,
// перехода HIGH-LOW на одном из выводов микроконтролера
TIM2->CR1 = 0; //остановка таймера

Естественно, прежде, чем можно будет воспользоваться таймером, его необходимо инициализировать. Для этого следует выполнить всего два действия – включить тактирование таймера и настроить предделитель на требуемую частоту счета (пусть это будет 10000 тиков всекунду или 10 тиков в миллисекунду):


RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->PSC = 7199;

Комментариев нет:

Отправить комментарий