Код
/* Настройка таймера TIM2 на событие: Прерывание при совпадении с р-ром TIM2_ARR */
TIM2->ARR=(8000); // загрузка рег-ра для сравнения 366/8000=0,046 Hz
TIM2->PSC=(65536-1); // предделитель CK_CNT=24000000/65536=366 Hz
TIM2->DIER|=(TIM_DIER_UIE); // разрешаем прерывание по срабатыванию таймера
TIM2->CNT=1;
TIM2->CR1|=(TIM_CR1_CEN); // Запуск Таймера
/* Разрешение прерывания TIM2 */
NVIC_EnableIRQ(TIM2_IRQn);
TIM2->ARR=(8000); // загрузка рег-ра для сравнения 366/8000=0,046 Hz
TIM2->PSC=(65536-1); // предделитель CK_CNT=24000000/65536=366 Hz
TIM2->DIER|=(TIM_DIER_UIE); // разрешаем прерывание по срабатыванию таймера
TIM2->CNT=1;
TIM2->CR1|=(TIM_CR1_CEN); // Запуск Таймера
/* Разрешение прерывания TIM2 */
NVIC_EnableIRQ(TIM2_IRQn);
Период србатывания ~21сек.
В обработчике поставил маркер срабатывания:
Код
void TIM2_IRQHandler (void)
{
u32 i;
TIM2->SR &=~(TIM_SR_UIF);// сброс ф.прерывания
SWITCH_PIN(PC8);
}
{
u32 i;
TIM2->SR &=~(TIM_SR_UIF);// сброс ф.прерывания
SWITCH_PIN(PC8);
}
При запуске программы почемуто сразу срабатывает прерывание. С какого это оно срабатывает , если событие не наступило?
Как сделать чтобы первое срабатывание было только по совпадению с рег-ом ARR ?