Целый рабочий день пытаюсь ресетнуть регистр TIM3->CNT. Казалось бы, все просто:
Код: Выделить всё
TIM3->CNT = 0x00;Но не тут-то было. Отладчик в IAR с упорством сумасшедшего показывает мне, что регистр обнулен не был. Объясню поподробнее.
Вот есть такой код, в котором я пытаюсь сделать так, чтобы флаг переполнения счетчика никогда не поднимался:
Код: Выделить всё
do
{
TIM3->EGR = 0x01;
} while ((TIM3->SR & 0x01) != 1);Но это не работает. Аналогичный вариант с топорным обнулением счетного регистра. Ну, не может такого быть, чтобы настроенный на частоту 1 МГц таймер за время проверки условия выхода из цикла досчитал до 65535 и обнулился! Может, я настраиваю чего не так:
Код: Выделить всё
RCC->APB1ENR |= RCC_APB1Periph_TIM3;
TIM3->CR1 = 0;
TIM3->ARR = 0xffff;
TIM3->PSC = (uint16_t) (SystemCoreClock / 1000000) - 1;
TIM3->EGR = TIM_PSCReloadMode_Immediate;Вся эта чертовщина происходит на STM32F0 discovery. Но отчего она?
