如何設(shè)置STM32中的PWM的頻率和占空比?看這里
下面的這個(gè)是stm32的定時(shí)器邏輯圖,看圖有助于理解:
TIM3的ARR寄存器和PSC寄存器,
確定PWM頻率。
這里配置的這兩個(gè)定時(shí)器確定了PWM的頻率,我的理解是:PWM的周期(頻率)就是ARR寄存器值與PSC寄存器值相乘得來,但不是簡單意義上的相乘,例如要設(shè)置PWM的頻率參考上次通用定時(shí)器中設(shè)置溢出時(shí)間的算法,例如輸出100HZ頻率的PWM,首先,確定TIMx的時(shí)鐘,除非APB1的時(shí)鐘分頻數(shù)設(shè)置為1,否則通用定時(shí)器TIMx的時(shí)鐘是APB1時(shí)鐘的2倍,這時(shí)的TIMx時(shí)鐘為72MHz,用這個(gè)TIMx時(shí)鐘72MHz除以(PSC+1),得到定時(shí)器每隔多少秒漲一次,這里給PSC賦7199,計(jì)算得定時(shí)器每隔0.0001秒漲一次,即此時(shí)頻率為10KHz,再把這個(gè)值乘以(ARR+1)得出PWM頻率,假如ARR值為0,即0.0001*(0+1),則輸出PWM頻率為10KHz,再假如輸出頻率為100Hz的PWM,則將ARR寄存器設(shè)置為99即可。如果想調(diào)整PWM占空比精度,則只需降低PSC寄存器的值即可。
TIMx_CCRx寄存器,確定PWM的占空比。
TIMx_CCR1—TIMx_CCR4確定定時(shí)器的CH1—CH4四路PWM的占空比。直接給該寄存器賦0—65535值即可確定占空比。占空比計(jì)算方法:TIMx_CCRx的值除以ARR寄存器的值即為占空比,因?yàn)檎伎毡仍?—100%之間,所以一般TIMx_CCRx寄存器值不能超過ARR寄存器的值,否則可能會(huì)引起PWM的頻率或占空比的準(zhǔn)確性。