这个定时器2是春风电源里的 数码管动态扫描和按键扫描中断函数
在中段函数里放置断点,仿真界面里观察每次的断点间隔时间都是在2MS以上
/*********************************************************************************
* 函数名称: Time2_Configuration 数码管动态扫描和按键扫描
* 功 能: 定时器2初始化,3mS (其前面的时钟设为72M啊应该1mS?,软件仿真为2MS)
72000000HZ / 36分频 = 2000000HZ 1 / 2000000HZ = 0.0000005s = 0.5us
每个加1的脉冲周期为0.5us * 2000设定值 = 1ms
* 参 数: 无
* 返回值 : 无
**********************************************************************************/
void Time2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_Period = 2000; //设置定时器周期
//TIM_Prescaler设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_Prescaler = 36; //设置定时器时钟分频值 它的取值必须在0x0000和0xFFFF之间
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置定时器向上计数
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; //设置定时器重装载值
TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure); //配置定时器2
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除中断标志(UIF)防止配置完成打开中断时立即产生中断
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); //使能定时器2允许更新中断(UIE)
//*******************************************************************************
//*使能定时器2功能(CEN)
//*在软件设置了CEN位后,外部时钟、门控模式和编码器模式才能工作。触发模式可以自动地
//*通过硬件设置CEN位。 在单脉冲模式下,当发生更新事件时,CEN被自动清除。
//********************************************************************************/
TIM_Cmd(TIM2, ENABLE); //使能定时器2功能(CEN)
} |