void Tim3_PWM_Configuration(void)
{
TIM_TimeBaseInitTypeDef tim;
TIM_OCInitTypeDef oc;
GPIO_InitTypeDef gpio;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA |
RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
// GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5
gpio.GPIO_Pin = GPIO_Pin_7;
gpio.GPIO_Mode = GPIO_Mode_AF_PP;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio);
gpio.GPIO_Pin = GPIO_Pin_0;
gpio.GPIO_Mode = GPIO_Mode_AF_PP;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &gpio);
GPIO_SetBits(GPIOA,GPIO_Pin_7);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
/* Time base configuration */
tim.TIM_Period = 1000 - 1; //f(pwm)=(72Mhz/150000)=480hz 频率
tim.TIM_Prescaler = (1440-1); //分频
tim.TIM_ClockDivision = 0; //时钟分割,一般写0
tim.TIM_CounterMode = TIM_CounterMode_Up; //设置为向上计数模式
TIM_TimeBaseInit(TIM3, &tim);
/* PWM1 Mode configuration: Channel1*/
oc.TIM_Pulse = 13; // 顺时针 5000 逆时针
oc.TIM_OCMode = TIM_OCMode_PWM2; //pwm模式
oc.TIM_OutputState = TIM_OutputState_Enable; //使能通道1
oc.TIM_OCPolarity = TIM_OCPolarity_Low; //低电平
TIM_OC2Init(TIM3, &oc); //通道控制
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR1上的预装载寄存器
TIM_OC3Init(TIM3, &oc); //通道控制
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR1上的预装载寄存器
TIM_ARRPreloadConfig(TIM3, ENABLE);
/* TIM4 enable counter */
TIM_Cmd(TIM3, ENABLE);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>