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