本帖最后由 mousie 于 2011-4-14 10:53 编辑
:L按2楼设的错位更加严重并且随时间递加,附上我的定时器设置代码,看看是我哪理解错了?
void CameraTriggerStar(u16 arr3, u16 arr4)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
/* TIM失能 */
// TIM_Cmd(TIM3, DISABLE);
// TIM_Cmd(TIM4, DISABLE);
/* 时基 */
TIM_TimeBaseStructure.TIM_Period = arr3;
TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);//TIM3——周期10K
TIM_TimeBaseStructure.TIM_Period = arr4;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);//TIM4——周期10K
/* TIM3设置*/
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_Channel = TIM_Channel_1;
TIM_OCInitStructure.TIM_Pulse = arr3 / 2;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInit(TIM3, &TIM_OCInitStructure);//脉宽调制输出——占空比50%
TIM_OCInitStructure.TIM_Channel = TIM_Channel_2;
TIM_OCInit(TIM3, &TIM_OCInitStructure);
TIM_OCInitStructure.TIM_Channel = TIM_Channel_3;
TIM_OCInit(TIM3, &TIM_OCInitStructure);
TIM_OCInitStructure.TIM_Channel = TIM_Channel_4;
TIM_OCInit(TIM3, &TIM_OCInitStructure);
TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);//使能主从模式
TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);//选择触发输出模式——更新事件
TIM_UpdateDisableConfig(TIM3, ENABLE);
/* TIM4设置 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_Channel = TIM_Channel_1;
TIM_OCInitStructure.TIM_Pulse = arr4 / 2;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInit(TIM4, &TIM_OCInitStructure);//脉宽调制输出——占空比50%
TIM_OCInitStructure.TIM_Channel = TIM_Channel_2;
TIM_OCInit(TIM4, &TIM_OCInitStructure);
TIM_OCInitStructure.TIM_Channel = TIM_Channel_3;
TIM_OCInit(TIM4, &TIM_OCInitStructure);
TIM_OCInitStructure.TIM_Channel = TIM_Channel_4;
TIM_OCInit(TIM4, &TIM_OCInitStructure);
TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Trigger);//选择从模式——计数器在触发(TRGI)的上升沿开始
TIM_SelectInputTrigger(TIM4, TIM_TS_ITR2);//选择输入触发源——(TIM3)
/* TIM使能*/
TIM_Cmd(TIM3, ENABLE);
TIM_Cmd(TIM4, ENABLE);
}
|