本人想实现这样一个效果:2 个(TIM1\TIM4)定时器,TIM1定时器计数值计满后(产生中断),同时触发TIM4,实现TIM4的值+1,当达到TIM4的比较值的时候,产生捕获中断。不知道如何实现,写了部分程序,调试能通过,也能跳中断,但是不是我要的效果。望高手指教!
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 8220;
TIM_TimeBaseStructure.TIM_Prescaler = 0x0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
/* TIM1 TRGO selection */
TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 63;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
/* TIM4 channel4 configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 8;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OC4Init(TIM4, &TIM_OCInitStructure);
TIM_SelectMasterSlaveMode(TIM1,TIM_MasterSlaveMode_Enable);// 主模式
TIM_SelectSlaveMode(TIM4,TIM_SlaveMode_External1); //从模式上升沿作为计数脉冲
TIM_ITRxExternalClockConfig(TIM4,TIM_TS_ITR0); //TIME4触发来自TIME1
TIM_Cmd(TIM1,ENABLE);
TIM_Cmd(TIM4,ENABLE);
TIM_ITConfig(TIM1,TIM_IT_Update, ENABLE );
TIM_ITConfig(TIM4,TIM_IT_CC4,ENABLE ); |