我想用定时器的单脉冲模式,用它接受方波的上升沿,在上升沿的激励下产生一个脉冲,但是对单脉冲模式的设置不是很了解,在网上的搜集资料后做了下面的程序:
单脉冲模式配置:ffice ffice" />
TIM_TimeBaseStructure.TIM_Period = 30;
TIM_TimeBaseStructure.TIM_Prescaler =36000-1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置定时器输出频率
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse =15;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
/* TIM4 configuration in Input Capture Mode */
TIM_ICStructInit(&TIM_ICInitStructure);
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 = 0;
TIM_ICInit(TIM3, &TIM_ICInitStructure);
TIM_Cmd(TIM3, ENABLE); //开启时钟
/* One Pulse Mode selection */
TIM_SelectOnePulseMode(TIM3, TIM_OPMode_Single);
/* Input Trigger selection */
TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);
/* Slave Mode selection: Trigger Mode */
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Trigger);
但是产生的脉冲波形与方波的上升沿有很大的相位差,不知道是什么原因,有哪位大侠出手相救啊??
注:方波是50hz的,我自己用定时器产生的,然后将两个端口接起来,给TIM3的CH2传输PWM波。
|