我配置了一个频率为1 1MHz的计时器,并设置了一个每隔几微秒运行一次的isr。问题是,我在逻辑分析仪上测量的周期总是偏离1us。如果我将定时器频率设置为1 1kHz,则周期始终为1ms。发生这种情况是有原因的,还是我做错了什么?
这是我当前的定时器配置,实际周期是11us:
uint16_t PrescalerValue = (uint16_t) ((SystemCoreClock / 2) / 1000000) - 1;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 10;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure);
/* TIM7 enable counter */
TIM_Cmd(TIM7, ENABLE);我正在和Keil一起在STM32F205xx上使用TIM7。
发布于 2015-02-03 19:48:19
计时器周期也计算为Timer_Ticks-1,所以行
TIM_TimeBaseStructure.TIM_Period = 10;应该是
TIM_TimeBaseStructure.TIM_Period = 9;https://stackoverflow.com/questions/28281361
复制相似问题