OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2955|回复: 0

stm32f103 MCU 的TIM3 通道1 和通道2 无法输出PWM

[复制链接]

13

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2015-3-9
在线时间
22 小时
发表于 2016-1-20 17:01:51 | 显示全部楼层 |阅读模式
void PWM_Config_X7_Laser(int TIME_Pulse)    //20160120
{
                        GPIO_InitTypeDef                       GPIO_InitStructure4;
                        TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure3;
                        TIM_OCInitTypeDef                     TIM_OCInitStructure3;
//        TIM_BDTRInitTypeDef         TIM_BDTRInitStructure2;
//第一步:配置时钟        
              //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
              RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);  //20151225
              RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  //20151225
                    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
                                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

       
//第二步,配置goio口
/********PA2 TIM2_CH3 引脚配置*********/        
        GPIO_InitStructure4.GPIO_Pin=GPIO_Pin_0 |GPIO_Pin_1; //CH1 和 CH2
        GPIO_InitStructure4.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure4.GPIO_Mode=GPIO_Mode_AF_PP;            //设置为复用推挽输出
        GPIO_Init(GPIOB,&GPIO_InitStructure4);
       
                  GPIO_InitStructure4.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
          GPIO_InitStructure4.GPIO_Mode = GPIO_Mode_AF_PP;
          GPIO_InitStructure4.GPIO_Speed = GPIO_Speed_50MHz;   
          GPIO_Init(GPIOA, &GPIO_InitStructure4);

//第三步,定时器基本配置
                                //TIM_InternalClockConfig(TIM3);    //20151225,CHECK
                  
                                TIM_TimeBaseStructure3.TIM_Period=999;  //1000-1;                                                   //波形周期 每计2000个数就产生一个更新事件 // 自动重装载寄存器的值
        TIM_TimeBaseStructure3.TIM_Prescaler=71;  //7;                                              //预分频系数 最大65536 ;//TIM_Prescaler=(72M/xHz)-1   这样计数器时钟为72MHz/36000=2kHz //20151225,CHECK
        TIM_TimeBaseStructure3.TIM_ClockDivision=TIM_CKD_DIV1;                           //采样分频 ,设置时钟分割;
        TIM_TimeBaseStructure3.TIM_CounterMode=TIM_CounterMode_Up;                //向上计数
        TIM_TimeBaseStructure3.TIM_RepetitionCounter=0;                                        //重复寄存器,用于自动更新pwm占空比                     
                                TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure3);                                   //将配置应用到TIM2中

//            TIM_ClearFlag(TIM2, TIM_FLAG_Update);                                                         //清除溢出中断标志
//                TIM_ARRPreloadConfig(TIM2, DISABLE);                                                         //禁止ARR预装载缓冲器      
//            TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);                                                 //开启TIM2的中断
//第四步pwm输出配置

        TIM_OCInitStructure3.TIM_OCMode=TIM_OCMode_PWM1;                                 //设置为pwm1输出模式
        TIM_OCInitStructure3.TIM_Pulse=TIME_Pulse; //hkhu 450;                   //设置占空比时间
        TIM_OCInitStructure3.TIM_OCPolarity=TIM_OCPolarity_High;//Low;  //设置输出极性
        TIM_OCInitStructure3.TIM_OutputState=TIM_OutputState_Enable;          //使能该通道输出        比较输出使能
        TIM_OC1Init(TIM3,&TIM_OCInitStructure3);                        //按照指定参数初始化

//第五步,使能端的打开
                                TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIMx在CCR1上的预装载寄存器
                               
                                TIM_OC2Init(TIM3, &TIM_OCInitStructure3);
                                TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
                               
                                TIM_OC3Init(TIM3, &TIM_OCInitStructure3);
                                TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
                               
                                TIM_OC4Init(TIM3, &TIM_OCInitStructure3);
                                TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);

        TIM_ARRPreloadConfig(TIM3, ENABLE);                //使能TIMx在ARR上的预装载寄存器
        TIM_Cmd(TIM3,ENABLE);                              //打开TIM2

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 18:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表