Если возникла необходимость измерения промежутка времени, например, длительности выполнения блока операций или интервала времени между двумя событиями, то логично привлечь к выполнению такой задачи один из имеющихся в микроконтроллере таймеров. Как именно производится измерение? А вот так – пример для блока операций:
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;
Комментариев нет:
Отправить комментарий