我手上的板子是L476RG,在当中一共有11个定时器:
其中分为基本、通用、高阶三种
基本定时器:TIM6,TIM7
通用定时器:TIM2,TIM3,TIM4,TIM5,TIM15,TIM16,TIM17
高阶定时器:TIM1,TIM8



在使用时可以透过DataSheet查找对应的脚位,或是直接透过IDE当中去的GPIO去查询相关的脚位~

PWM工作原理
PWM是将类比信号转换为脉波,一般转换后脉波的週期固定,但脉波的占空比会依类比信号的大小而改变。
什么是佔空比(Duty Cycle)?
佔空比是指输出的PWM当中,高电位保持的时间与整个週期之比。可以看到下图当中最上方为50%的佔空比,也就是高电位与低电位各佔50%。
週期:一个脉冲信号的时间(高电位+低电位)
脉冲时间:高电位的时间
举例来说週期是10ms,脉冲时间(高电位)是6ms低电位是4ms,加总就会等于6/6+4=60%,占空比也就等于60%。
Timer使用PWM输出模式时,相比前面所介绍到的Timer定时模式CNT与ARR,还会多了一个CCRx。可以看到上方的图片,在模式2向上计数的情况下,CNT计数值大于CCRx的时候会输出高电位,相反的低于CCRx时则是低电位。
按照上方的图来看可以得知 :
ARR : 主要控制的是频率,也就是绿框的部分
CCRx : 主要为控制佔空比,也就是蓝框的部分
计算方法
PWM频率计算Fpwm =Tclk / ((arr+1)*(psc+1))(单位:Hz)工作週期(佔空比)
duty cycle = pulse/ARR * 100%
假如时钟频率为16Mhz分频係数设为15,想要产生一个200hz的工作週期为75%的方波,计算方式如下:
200hz = 16mhz / (arr+1)*(15+1) 这样arr会等于5000
工作週期计算则会变成
pulse/5000x100% = 75% 这样pulse会等于3750
以上内容如果有误的话,麻烦各位通知我。感谢~