OpenEdv-开源电子网

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

新手求助,407VET6定时器1PWM输出

[复制链接]

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
发表于 2017-1-14 18:55:50 | 显示全部楼层 |阅读模式
1金钱
两天前自己配置的定时器1PWM输出,当时能用,同学还看到了的,今天来突然不能用了,大神能不能帮忙看下代码有没有错误
GPIO_InitTypeDef GPIO_InitStructure;
               
        RCC->APB2ENR|=1;//enable the clock of Timer1
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
       
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_TIM1 );
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_TIM1 );
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_TIM1 );
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_TIM1 );
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;         
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        //¸′óÃ1|Äü
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //Ëù¶è100MHz
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //íÆíì¸′óÃêä3ö
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //éÏà-
        GPIO_Init(GPIOA,&GPIO_InitStructure);         //3õê¼»ˉPA
       
        TIM1->ARR=1000;                        //auto reload
        TIM1->PSC=84;               
       
        TIM1->CCMR1|=6<<4;        //CH1 PWM1 mode
        TIM1->CCMR1|=6<<12;        //CH2 PWM1 mode
        TIM1->CCMR2|=6<<4;        //CH3 PWM1 mode
        TIM1->CCMR2|=6<<12;        //CH4 PWM1 mode
       
        TIM1->CCMR1|=1<<3;        //CH1 preload enable
        TIM1->CCMR1|=1<<11;        //CH2 preload enable
        TIM1->CCMR2|=1<<3;        //CH3 preload enable
        TIM1->CCMR2|=1<<11;        //CH4 preload enable
                       
        TIM1->CCER|=1;                        //enable OC1
        TIM1->CCER|=1<<4;                //enable OC2
        TIM1->CCER|=1<<8;                //enable OC3
        TIM1->CCER|=1<<12;        //enable OC4
       
        TIM1->CCER|=0<<1;         //oc1 active high
        TIM1->CCER|=0<<5;         //oc2 active high
        TIM1->CCER|=0<<9;         //oc3 active high
        TIM1->CCER|=0<<13;         //oc4 active high
       
        TIM1->BDTR|=1<<15;        //enable OC,BDTR mode=1
        TIM1->BDTR|=1<<14;        //enable auto output
        TIM1->EGR|=1;
        TIM1->CR1|=1<<7;                // enable ARPE
        TIM1->CCR1=CCR1;
        TIM1->CCR2=CCR2;
        TIM1->CCR3=CCR3;
        TIM1->CCR4=CCR4;
        TIM1->CR1|=1;                                //enable timer1       

最佳答案

查看完整内容[请看2#楼]

哈哈,找到错误了,是楼主自己白痴了,初始化的是Timer1,对比较器赋值的却是Timer8。 不好意思,误导大家了。代码是正确的。供大家参考。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
 楼主| 发表于 2017-1-14 18:55:51 | 显示全部楼层
哈哈,找到错误了,是楼主自己白痴了,初始化的是Timer1,对比较器赋值的却是Timer8。
不好意思,误导大家了。代码是正确的。供大家参考。
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2016-12-19
在线时间
30 小时
 楼主| 发表于 2017-1-14 20:14:42 | 显示全部楼层
还有一个错误就是,GPIOA的时钟应该是AHB1,而我写成了APB1
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 04:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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