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