[STM32F1] TIM3 输出两路PWM PBO和PB1

[复制链接]
1395|4
 楼主| wang719 发表于 2014-7-22 19:19 | 显示全部楼层 |阅读模式
PWM, TI, ni, pi, IO
void TIM3_PWM_Init(u16 val_1,u16 val_2)            //¶¨Ê±Æ÷3  Êä³öPWM
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
       
        GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //TIM_CH1
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //??????
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        TIM_DeInit(TIM3);
        TIM_TimeBaseInitStructure.TIM_Period = 20000;                       // ???????
        TIM_TimeBaseInitStructure.TIM_Prescaler =71 ;
        TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);       


       
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_Low;
        TIM_OCInitStructure.TIM_Pulse = val_1;
        TIM_OCInitStructure.TIM_OutputNState = ENABLE;
        TIM_OC3Init(TIM3,&TIM_OCInitStructure);
        TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);
       
        TIM_OCInitStructure.TIM_Pulse = val_2;       
        TIM_OC4Init(TIM3,&TIM_OCInitStructure);
        TIM_OC4PreloadConfig(TIM3,TIM_OCPreload_Enable);
       
        TIM_CtrlPWMOutputs(TIM3,ENABLE);
       
        TIM_ARRPreloadConfig(TIM3,ENABLE);
        TIM_Cmd(TIM3,ENABLE);
}
 楼主| wang719 发表于 2014-7-22 19:20 | 显示全部楼层
为啥相应的管脚输出的信号非常的怪异  频率也相差很大
mmuuss586 发表于 2014-7-22 20:22 | 显示全部楼层
wang719 发表于 2014-7-22 19:20
为啥相应的管脚输出的信号非常的怪异  频率也相差很大

:)
正常的话,频率应该一样的,占空比不一定一样;
波形怪异,发个图片上来看看;
mmuuss586 发表于 2014-7-22 20:24 | 显示全部楼层
我发的基于定时器1的参考程序,你可以看看;
定时器3你参考例程试下看看;
https://bbs.21ic.com/icview-769928-1-1.html
airwill 发表于 2014-7-23 10:07 | 显示全部楼层
我估计不是定时器的问题, 而是因为频繁修改 CCR 寄存器导致的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部