}
//TIM1?÷????????PWM??TIM2??????????????
void TIM1_Master__TIM2_Slave_Configuration(u32 PulseFrequency)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
u16 nPDTemp ;
TIM_Cmd(TIM1, DISABLE);
//TIMxCLK = 72 MHz, Prescaler = 0x0, TIMx counter clock = 72 MHz
//TIMx ARR Register = 0 => TIMx Frequency = TIMx counter clock/(ARR + 1)
//TIMx Frequency = 72MHz.
nPDTemp = 72000000UL/PulseFrequency; //?ü???????±×??????í 72000000UL?°TIM_Prescler
//??TIM_Period????????0xFFFF
// ?±?ù????,????PWM?????¨?±?÷-TIM1
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = nPDTemp-1; //?è???????????ü??????×°????????×?????×°???????÷????????
TIM_TimeBaseStructure.TIM_Prescaler = 0; //?è??????×÷??TIMx?±?????????????¤·?????
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //?è???±??·???:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM?ò??????????
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //?ù??TIM_TimeBaseInitStruct?????¨????????????TIM1???±???ù??????
//??????TIM1 Channel1 PWM????
/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;// ?????¨?±?÷????:TIM?????í???÷??????1
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????????:TIM????±?????????
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±???????????
TIM_OCInitStructure.TIM_Pulse = nPDTemp>>1;//50% //CCR1_Val/(TIM_Period+1)/2=nPDTemp/(nPDTemp-1+1)/2=0.5
TIM_OC1Init(TIM1, &TIM_OCInitStructure); //?ù?????¨???????????????èTIM1 OC1
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); //????TIM1??CCR1?????¤×°???????÷
TIM_ARRPreloadConfig(TIM1, ENABLE); //????TIM1
// ?±?ù????,?????????????÷-TIM2
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
// Output Compare Active Mode configuration: Channel1
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Inactive;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0xFFFF;//?????????????????ó
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
// ????TIM1???÷?¨?±?÷
// Select the Master Slave Mode
TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable);
// Master Mode selection
TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);
// ????TIM2?????¨?±?÷
// Slave Mode selection: TIM2
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Gated);
TIM_SelectInputTrigger(TIM2, TIM_TS_ITR0); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TIM_ITRxExternalClockConfig(TIM2, TIM_TS_ITR0);////////????????ITR0?????ò??????×???/////////////??????????????????????????????????????
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
TIM_Cmd(TIM1, DISABLE);
TIM_Cmd(TIM2, DISABLE);
}
void syringe_Output_Pulse(u16 Num)
{
TIM2->CCR1 = Num;
TIM2->CNT = 0;
TIM_Cmd(TIM2, ENABLE);
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
TIM_Cmd(TIM1, ENABLE);
TIM1_Pulse_TIM2_Counter_OK = 1;
}
用TIM3输出PWM没有问题,改成TIM1时仿真有,下载到板子上就没了,现在PE9悬空,不是硬件上被置0。
哪位碰到过同样的问题,请帮下忙。谢了。