Переменная 1 = 250.
Переменная 2 = 36000.
1-Загружаю в ARR переменную 2, жду прерывание, останавливаю таймер.
2-Загружаю в ARR переменную 1, жду прерывание, останавливаю таймер.
3-Пауза на 3мСек.
4-Загружаю в ARR переменную 2, жду прерывание, останавливаю таймер.(Здесь проблема)
5-Загружаю в ARR переменную 1, жду прерывание, останавливаю таймер.
6-Пауза на 3мСек.
И далее все повторяется.
Проблема в том что на шаге 4 прерывание всегда срабатывает раньше чем должно быть .
void TIM11_Init(void)
{
RCC->APB2ENR |= RCC_APB2ENR_TIM11EN;
TIM11->CR1 = 0;
TIM11->PSC = 9;
TIM11->ARR = 0;
TIM11->DIER |= TIM_DIER_UIE;
NVIC_EnableIRQ(TIM1_TRG_COM_TIM11_IRQn);
NVIC_SetPriority(TIM1_TRG_COM_TIM11_IRQn, 0);
}
void StartTIM11(uint16_t tim)
{
TIM11->ARR = tim;
TIM11->CR1 |= TIM_CR1_CEN; // Включить счётчик
}
void StopTIM11(void)
{
TIM11->CR1 &=~ TIM_CR1_CEN;
}
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


