Страница 1 из 1

Таймер STM32F030K6T6

Добавлено: Пн дек 10, 2018 07:23:14
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)
  {


  }
}

Re: Таймер STM32F030K6T6

Добавлено: Пн дек 10, 2018 07:38:08
Z_h_e
Это же SPL? Я его не знаю.
Наверное вот это tim_sr.TIM_Period=4800; устанавливает регистр ARR в 4800

Re: Таймер STM32F030K6T6

Добавлено: Пн дек 10, 2018 11:56:06
SyncM
Спасибо. Разобрался. Тема закрыта