Здравствуйте. Не могу понять почему таймер 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)
{
}
}