基于STM32的PWM音樂播放器應(yīng)用設(shè)計
2.1.1 系統(tǒng)時鐘設(shè)置
要保證定時的準(zhǔn)確性,必須先確保系統(tǒng)時鐘的設(shè)置是我們所預(yù)期的。定時器時鐘分配如圖1所示。通過編程使SYSCLK為72 MHz,APB1預(yù)分頻后得到PCLK1為36 MHz,再經(jīng)TIM2~TIM7倍頻器得到TIM2~TIM7時鐘72 MHz。時鐘源多采用HSE(外部時鐘源),對于STM32F103,其外部時鐘為8 MHz,而STM32F107外部時鐘為25 MHz,因此,在使用HSE做時鐘源時,這兩種器件產(chǎn)生SYSCLK的分頻和倍頻方式不同,需要使用者引起注意。
3 用PWM控制蜂鳴器播放音樂
3.1 硬件電路設(shè)計
蜂鳴器電路如圖2所示。需要注意的是,有源蜂鳴器是以固定頻率工作,加電即可鳴叫,無源蜂鳴器可以用不同頻率輸入信號來控制發(fā)聲,因此,需要選擇無源蜂鳴器。核心控制器件選擇STM32F103VET6,其引腳PB5連接到BEEP。由電路可知,當(dāng)PB5為高電平時,蜂鳴器可工作,只要控制PB5高低電平輸出形成的矩形波的頻率就可以控制蜂鳴器演奏音樂。
3.2 程序設(shè)計
3.2.1 制作樂譜
音階的產(chǎn)生依賴于PWM輸出信號的頻率。為了簡化設(shè)計,我們令定時器的TIM_Period為1 999,且占空比始終為50%,根據(jù)式(1)則TIM_ Pulse為1000。此時,PWM輸出信號頻率僅與定時器預(yù)分頻系數(shù)TIM_Prescaler有關(guān),只需要調(diào)整該系數(shù),即可得到所需信號頻率。
TIM_Prescaler由下式得到:
式(2)中,fsound為音階對應(yīng)的頻率,如低音Do頻率為262 Hz。要產(chǎn)生該音頻,TIM_Prescaler應(yīng)為136。
樂譜由音階和節(jié)拍組成,每兩個元素為一組,前者表示音階,后者表示節(jié)拍。節(jié)拍以1/4拍為基準(zhǔn),存放的數(shù)值為1/4拍的倍數(shù)。相關(guān)代碼如下:
pwm相關(guān)文章:pwm是什么
pwm相關(guān)文章:pwm原理
蜂鳴器相關(guān)文章:蜂鳴器原理
評論