这几天一直在弄定时器PWM输入捕获,发现在初始化定时器时,提供的例程没有配置定时器中计数器TIMx_CNT的时钟频率,
下面就是定时器初始化,这是什么原因呢?
void TIM2_Mode_Config(void)
{
TIM_ICInitTypeDef TIM_ICInitStructure; //脉冲输入结构体
TIM_ICInitStructure.TIM_Channel=TIM_Channel_2 ; //通道TIM2_CH2
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising; //触发输入信号为上升沿,CCR2存脉冲周期,CCR1存占空比
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI; //通道2即TIM2_CH2对应IC2
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1; //脉冲输入每个边沿捕获一次
TIM_ICInitStructure.TIM_ICFilter=0x00; //选择输入比较滤波器0x0 ,值为0x0---0xF
TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);
TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2); //选择TIM2输入触发源: TIM 经滤波定时器输入 2
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); //选择从控制器模式:复位模式
TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); //开启复位模式
TIM_Cmd(TIM2, ENABLE);
TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE); //开启 CC2 中断
}
里面只配置了这个
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1; //脉冲输入每个边沿捕获一次
怎么没有配置像这样TIM_TIMBsaseStructure.TIM_Prescaler=0 //72MHz,这才是配置计数器时钟频率呀?
手册有这么句话 “配置输入预分频器。在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预
分频器被禁止(写TIMx_CCMR1寄存器的IC1PS=00)”
同时,库函数给的注解
#define TIM_ICPSC_DIV1 ((uint16_t)0x0000) /*!< Capture performed each time an edge is detected on the capture input. */
#define TIM_ICPSC_DIV2 ((uint16_t)0x0004) /*!< Capture performed once every 2 events. */
#define TIM_ICPSC_DIV4 ((uint16_t)0x0008) /*!< Capture performed once every 4 events. */
#define TIM_ICPSC_DIV8 ((uint16_t)0x000C) /*!< Capture performed once every 8 events. */
这其中有什么分别,请教! |