【发布时间】:2015-02-03 19:48:18
【问题描述】:
我已经配置了一个频率为 1MHz 的计时器,并且我设置了一个每隔几微秒运行一次的 isr。问题是,我在逻辑分析仪上测量的周期总是偏离 1us。如果我将定时器频率设置为 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。
【问题讨论】: