Таймер STM32F030K6T6

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
SyncM
Открыл глаза
Сообщения: 62
Зарегистрирован: Вт ноя 03, 2009 07:44:57

Таймер STM32F030K6T6

Сообщение SyncM »

Здравствуйте. Не могу понять почему таймер 16 не досчитывает до 50000. Из while(ff<50000) не выходит, хотя если включаешь прерывания то прерывание по переполнению работает.

Код: Выделить всё

#include "stm32f0xx_conf.h"


volatile uint16_t ff;


void TIM16_IRQHandler(void){
if(TIM_GetITStatus(TIM16, TIM_IT_Update)!= RESET){
    TIM_ClearITPendingBit(TIM16, TIM_IT_Update);

}
}

void init_timer_sr04(void){

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16,ENABLE);

    TIM_TimeBaseInitTypeDef tim_sr;

    tim_sr.TIM_ClockDivision=TIM_CKD_DIV1;  //  0.01 sec
    tim_sr.TIM_CounterMode=TIM_CounterMode_Up;
    tim_sr.TIM_Period=4800;
    tim_sr.TIM_Prescaler=1000-1;
    tim_sr.TIM_RepetitionCounter=0;
    TIM_TimeBaseInit(TIM16, &tim_sr);

}




int main(void)
{

    init_timer_sr04();

    TIM_Cmd(TIM16, ENABLE);

while(ff<50000){
    ff=TIM16->CNT;
}

TIM_Cmd(TIM16, DISABLE);

  while(1)
  {


  }
}
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Таймер STM32F030K6T6

Сообщение Z_h_e »

Это же SPL? Я его не знаю.
Наверное вот это tim_sr.TIM_Period=4800; устанавливает регистр ARR в 4800
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
SyncM
Открыл глаза
Сообщения: 62
Зарегистрирован: Вт ноя 03, 2009 07:44:57

Re: Таймер STM32F030K6T6

Сообщение SyncM »

Спасибо. Разобрался. Тема закрыта
Ответить

Вернуться в «ARM»