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