金牌会员
 
- 积分
- 2008
- 金钱
- 2008
- 注册时间
- 2014-7-1
- 在线时间
- 189 小时
|
本帖最后由 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]
|
|