void TIM_Configuration(void)//TIM3的CAP初始化函数
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定时器初始化结构
TIM_ICInitTypeDef TIM_ICInitStructure; //通道输入初始化结构
//TIM3输出初始化
TIM_DeInit(TIM3);
TIM_TimeBaseStructure.TIM_Period = 0xFFFF; //周期0~FFFF
TIM_TimeBaseStructure.TIM_Prescaler = 5; //时钟分频
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);//基本初始化
//TIM3通道的捕捉初始化
// TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP;//配置为输入捕获模式
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;//通道选择
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;//输入上升沿 捕获
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//管脚与寄存器对应关系
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//分频器 //每次检测到捕获输入就触发一次捕获
TIM_ICInitStructure.TIM_ICFilter = 0x0; //滤波设置,经历几个周期跳变认定波形稳定0x0~0xF
TIM_ICInit(TIM3, &TIM_ICInitStructure); //初始化
//参考TIM结构图选择滤波后的TI1输入作为触发源,触发下面程序的复位
TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);//选择时钟触发源
//复位模式-选中的触发输入(TRGI)的上升沿初始化计数器,并且产生一个更新线号
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);//触发方式
TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);//主从模式选择 //启动定时器的被动触发
TIM_ITConfig(TIM3,TIM_IT_CC2, ENABLE); //打开中断
TIM_Cmd(TIM3, ENABLE); //启动TIM3
}
|