u8
TIM4_CCR3_Val = 30 ;
void TIMER_Configuration()
{
#define PrescalerValue 10 - 1
#define PrescalerValue1 2000 - 1
#define PrescalerValue2 2 - 1
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
// time2 channel 4 100k/2/4/2=6250Hz Toggle slave */
// time3 channel 3 60M/2000/30000/2=0.5Hz timing */
// time4 channel 3 60M/10/30/2= 100KHz Toggle master */
TIM_DeInit(TIM2);
TIM_DeInit(TIM3);
TIM_DeInit(TIM4);
TIM_InternalClockConfig(TIM3);
TIM_InternalClockConfig(TIM4);
//* time3 channel 3  

B13 */
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 65536 - 1;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
TIM_PrescalerConfig(TIM3, PrescalerValue1, TIM_PSCReloadMode_Immediate);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
TIM_OCInitStructure.TIM_Pulse = TIM3_CCR3_Val ;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Disable);
//* time2 channel 4 PA3*/
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 65536 - 1;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
TIM_PrescalerConfig(TIM2, PrescalerValue2, TIM_PSCReloadMode_Immediate);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OCInitStructure.TIM_Pulse = TIM2_CCR4_Val ;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OC4Init(TIM2, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Disable);
TIM_SelectInputTrigger(TIM2, TIM_TS_ITR3);
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Trigger);
//* time4 channel 3 PB8 模式 输出比较触发 */
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 65536 - 1;
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);
TIM_PrescalerConfig(TIM4, PrescalerValue, TIM_PSCReloadMode_Immediate);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OCInitStructure.TIM_Pulse = TIM4_CCR3_Val ; // 捕获比较值
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OC3Init(TIM4, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Disable); // 禁止预装值
TIM_SelectOutputTrigger(TIM4, TIM_TRGOSource_Update);
TIM_SelectMasterSlaveMode(TIM4, TIM_MasterSlaveMode_Enable);
// 清除中断标志,避免开启中断就产生中断
TIM_ClearITPendingBit(TIM2,TIM_IT_CC4);
TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);
TIM_ClearITPendingBit(TIM3,TIM_IT_CC3);
TIM_ITConfig(TIM3, TIM_IT_CC3, ENABLE);
TIM_ClearITPendingBit(TIM4,TIM_IT_CC3);
TIM_ITConfig(TIM4, TIM_IT_CC3, ENABLE);
TIM_Cmd(TIM4, ENABLE);
TIM_Cmd(TIM2, ENABLE);
TIM_Cmd(TIM3, ENABLE);
}
第一次使用STM32,使用定时器产生两个同步时钟信号,tim4输出100KHz信号正确,但tim2输出6.25KHz信号怎么也不对?