新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2016-4-11
- 在线时间
- 1 小时
|
5金钱
原来函数能正常输出PWM波
void TIM_PWM_Config(uint16_t Frequency, double DutyCycle)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
/* Compute the prescaler value */
uint16_t PrescalerValue = (uint16_t) (SystemCoreClock / 10000000) - 1;
uint16_t pulse = (uint16_t)((10000000/Frequency)*DutyCycle);
RCC_TIMCLKPresConfig(RCC_TIMPrescActivated);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 10000000/Frequency-1;
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = pulse;
// TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
}
主函数中对应程序
TIM_PWM_Config(4000, 0.5);
但加入形参uint8_t Num后
void TIM_PWM_Config(uint8_t Num, uint16_t Frequency, double DutyCycle)
主函数中对应程序
TIM_PWM_Config(1,4000, 0.5);
其他部分无变化则只输出低电平
两种情况函数调用后TIM2各寄存器如图
|
-
|