详解STM32的PWM输出及频率和脉宽的计算——寄存器配置六步曲!

一、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 gpioa->crl |= 0x0b000000;//复用功能输出(推挽50mhz输出)
gpioa->odr |= 1 tim3->psc = psc;//预分频器,0为不分频
4、设置pwm的模式(有1和2两种模式,区别在于输出电平极性相反),根据需求选一种即可
注:timx_ccmr1决定ch1~ch2路,timx_ccmr2决定ch3~ch4路。
//tim3->ccmr1 |=6 tim3->cr1 |= 0x01;//使能定时器3
下面给出tim3_ch1及tim3_ch2的pwm输出代码:
void pwm_init_tim3_ch1(u16 arr, u16 psc)
{
//1、使能tim3时钟
rcc->apb1enr |= 1 gpioa->crl |= 0x0b000000;//复用功能输出(推挽50mhz输出)
gpioa->odr |= 1 tim3->psc = psc;//预分频器 0为不分频
//4、设置pwm的模式
tim3->ccmr1 |= 7 tim3->cr1 |= 0x01;//使能定时器3
}
void pwm_init_tim3_ch2(u16 arr, u16 psc)
{
rcc->apb1enr |= 1 crl |= 0xb0000000;//复用功能输出(推挽50mhz输出)
gpioa->odr |= 1 tim3->psc = psc;//预分频器 不分频
tim3->ccmr1 |= 7 }
频率:
//fpwm = 72m / ((arr+1)*(psc+1))(单位:hz)
占空比:
//duty circle = tim3->ccr1 / arr(单位:%)
注:本文方法的一个定时器4个通道的pwm输出的频率是相同的,但占空比可以不同!

小米MAX2最新消息:小米MAX2拍照样张曝光,1200万像素+巨屏+后置指纹识别+续航升级
射频/微波PCB设计详情
达志科技拟向特定对象募资不超过9亿元
小米5C即将来袭诺基亚新机不会再等待?全球首款飞行手机壳
LED品质的影响因素
详解STM32的PWM输出及频率和脉宽的计算——寄存器配置六步曲!
4-20mA转Modbus TCP网络数据采集模块IBF80-A4-RJ45
三星停产Galaxy Note7 苹果iPhone7/7 Plus迎圣诞季
乙炔发生器安全制造的技术要求有哪些
多种科技应用于健身之中,让健身房变得更智能和便捷
华为Mate 40线上订购比火车票还难抢
8TB固态硬盘版本Mac Pro上架 相较4TB选配价格基本翻倍
verilog的一些基本概念
三星Galaxy S8外形曝光:sRGB排列2K屏、无Home键
为了扩大手机在中国的销量,三星推出了渐变色机身设计的手机
矢量网络分析仪在射频信号测量中应用分析
压电陶瓷的静态特性是怎样的
Vishay推出新款高饱和电流电感,提高系统饱和及温度稳定性
BRYDGE的触控板可完全取代鼠标使用
如何买到好的笔记本