全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

stm32的pwm输出及频率计算方法

时间:2017-11-29 15:51

人气:

作者:admin

标签: PWM 

导读:stm32的pwm输出引脚是使用的IO口的复用功能...

一、stm32的pwm输出引脚是使用的IO口的复用功能。

二、T2~T5这4个通用定时器均可输出4路PWM——CH1~CH4。

三、我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch2两路pwm输出的c代码(已在STM32F103RBT6上测试成功,大家放心使用!)。

四、给出了PWM频率和占空比的计算公式。

步骤如下:

1、使能TIM3时钟

RCC->APB1ENR |= 1 2、配置对应引脚(PA6)的复用输出功能

GPIOA->CRL &= 0XF0FFFFFF;//PA6清0GPIOA->CRL |= 0X0B000000;//复用功能输出(推挽50MHz输出)GPIOA->ODR |= 1

3、设定计数器自动重装值及是否分频

TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率)TIM3->PSC = psc;//预分频器,0为不分频

4、设置PWM的模式(有1和2两种模式,区别在于输出电平极性相反),根据需求选一种即可

注:TIMX_CCMR1决定CH1~CH2路,TIMX_CCMR2决定CH3~CH4路。

//TIM3->CCMR1 |= 6 TIM3->CCMR1 |= 7 TIM3->CCMR1 |= 1

5、输出使能设置

TIM3->CCER |= 1

6、自动重装载预装载允许位(ARPE) 及定时器使能

TIM3->CR1 = 0X0080;//ARPE使能(此句不配置也行)TIM3->CR1 |= 0X01;//使能定时器3

下面给出TIM3_CH1及TIM3_CH2的PWM输出代码:void PWM_Init_TIM3_CH1(u16 arr, u16 psc){//1、使能TIM3时钟RCC->APB1ENR |= 1 //2、配置对应引脚(PA6)的复用输出功能GPIOA->CRL &= 0XF0FFFFFF;//PA6清0GPIOA->CRL |= 0X0B000000;//复用功能输出(推挽50MHz输出)GPIOA->ODR |= 1 //3、设定计数器自动重装值及是否分频TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率)TIM3->PSC = psc;//预分频器 0为不分频//4、设置PWM的模式TIM3->CCMR1 |= 7 TIM3->CCMR1 |= 1 //5、输出使能设置TIM3->CCER |= 1 //6、自动重装载预装载允许位(ARPE) 及 定时器 使能TIM3->CR1 = 0X0080;//ARPE使能TIM3->CR1 |= 0X01;//使能定时器3}void PWM_Init_TIM3_CH2(u16 arr, u16 psc){RCC->APB1ENR |= 1

GPIOA->CRL &= 0X0FFFFFFF;//PA7清0GPIOA->CRL |= 0XB0000000;//复用功能输出(推挽50MHz输出)GPIOA->ODR |= 1 TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率)TIM3->PSC = psc;//预分频器 不分频TIM3->CCMR1 |= 7 TIM3->CCMR1 |= 1 TIM3->CCER |= 1 TIM3->CR1 = 0X0080;//ARPE使能TIM3->CR1 |= 0X01;//使能定时器3}频率://Fpwm = 72M / ((arr+1)*(psc+1))(单位:Hz)占空比://duty circle = TIM3->CCR1 / arr(单位:%)注:本文方法的一个定时器4个通道的pwm输出的频率是相同的,但占空比可以不同!

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信