OpenEdv-开源电子网

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

8路PWM波

[复制链接]

84

主题

347

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2008
金钱
2008
注册时间
2014-7-1
在线时间
189 小时
发表于 2016-3-11 15:05:23 | 显示全部楼层 |阅读模式
本帖最后由 shenqihao 于 2016-3-12 08:20 编辑

前几天测试下pwm波,定时器3和4,一共8路,把代码分享下,定时器设置。STM32f103rc
[mw_shl_code=applescript,true]void TIM3_PWM_Init(u16 arr,u16 psc)
{
        RCC->APB1ENR|=1<<1;                //TIM3时钟使能
        RCC->APB2ENR|=1<<2;                //GPIOA时钟使能
        RCC->APB2ENR|=1<<3;                //GPIOB时钟使能        
        GPIOA->CRL&=0X00FFFFFF;        //PA6,PA7清除之前的设置
        GPIOA->CRL|=0XBB000000;        //复用功能输出
        GPIOB->CRL&=0XFFFFFF00;        //PB0,PB1清除之前的设置
        GPIOB->CRL|=0X000000BB;        //复用功能输出
        
        TIM3->ARR=arr;                        //设定计数器自动重装值
        TIM3->PSC=psc;                        //预分频器设置
        
        TIM3->CCMR1|=7<<4;          //CH1 PWM2模式                 
        TIM3->CCMR1|=1<<3;                 //CH1预装载使能         
         TIM3->CCER|=1<<0;           //OC1 输出使能           
        
        TIM3->CCMR1|=7<<12;          //CH2 PWM2模式                 
        TIM3->CCMR1|=1<<11;         //CH2预装载使能         
         TIM3->CCER|=1<<4;           //OC2 输出使能        

        TIM3->CCMR2|=7<<4;          //CH3 PWM2模式                 
        TIM3->CCMR2|=1<<3;                 //CH3预装载使能         
         TIM3->CCER|=1<<8;           //OC3 输出使能
        
        TIM3->CCMR2|=7<<12;          //CH4 PWM2模式                 
        TIM3->CCMR2|=1<<11;         //CH4预装载使能         
         TIM3->CCER|=1<<12;           //OC4 输出使能
        
        TIM3->BDTR|=1<<15;           //MOE 主输出使能         
        
        TIM3->CR1=0x0080;           //ARPE使能
        TIM3->CR1|=0x01;            //使能定时器
}


void TIM4_PWM_Init(u16 arr,u16 psc)
{
        RCC->APB1ENR|=1<<2;                //TIM4时钟使能
        RCC->APB2ENR|=1<<3;                //GPIOB时钟使能        
        GPIOB->CRL&=0X00FFFFFF;        //PB6,PB7清除之前的设置
        GPIOB->CRL|=0XBB000000;        //复用功能输出
        GPIOB->CRH&=0XFFFFFF00;        //PB8,PB9清除之前的设置
        GPIOB->CRH|=0X000000BB;        //复用功能输出        
        
        TIM4->ARR=arr;                        //设定计数器自动重装值
        TIM4->PSC=psc;                        //预分频器设置
        
        TIM4->CCMR1|=7<<4;          //CH1 PWM2模式                 
        TIM4->CCMR1|=1<<3;                 //CH1预装载使能         
         TIM4->CCER|=1<<0;           //OC1 输出使能           
        
        TIM4->CCMR1|=7<<12;          //CH2 PWM2模式                 
        TIM4->CCMR1|=1<<11;         //CH2预装载使能         
         TIM4->CCER|=1<<4;           //OC2 输出使能        

        TIM4->CCMR2|=7<<4;          //CH3 PWM2模式                 
        TIM4->CCMR2|=1<<3;                 //CH3预装载使能         
         TIM4->CCER|=1<<8;           //OC3 输出使能
        
        TIM4->CCMR2|=7<<12;          //CH4 PWM2模式                 
        TIM3->CCMR2|=1<<11;         //CH4预装载使能         
         TIM4->CCER|=1<<12;           //OC4 输出使能        
        
        TIM4->BDTR|=1<<15;           //MOE 主输出使能         
        
        TIM4->CR1=0x0080;           //ARPE使能
        TIM4->CR1|=0x01;            //使能定时器         
}
[/mw_shl_code]
宏定义代码
[mw_shl_code=applescript,true]#define LED0_PWM_VAL TIM3->CCR1   
#define LED1_PWM_VAL TIM3->CCR2
#define LED2_PWM_VAL TIM3->CCR3
#define LED3_PWM_VAL TIM3->CCR4

#define LED5_PWM_VAL TIM4->CCR1   
#define LED6_PWM_VAL TIM4->CCR2
#define LED7_PWM_VAL TIM4->CCR3
#define LED8_PWM_VAL TIM4->CCR4

void TIM4_PWM_Init(u16 arr,u16 psc);
void TIM3_PWM_Init(u16 arr,u16 psc);[/mw_shl_code]
测试文件使用代码
[mw_shl_code=applescript,true]        TIM3_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz
        TIM4_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz
        
                LED0_PWM_VAL=50;         
                LED1_PWM_VAL=100;
                LED2_PWM_VAL=150;
                LED3_PWM_VAL=200;
                LED5_PWM_VAL=250;
                LED6_PWM_VAL=300;        
                LED7_PWM_VAL=350;
                LED8_PWM_VAL=400;[/mw_shl_code]
做一个相信自己的人
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2016-1-19
在线时间
38 小时
发表于 2016-3-11 18:05:04 | 显示全部楼层
原来你也在这里
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 05:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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