<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于STM32的PWM音樂播放器應(yīng)用設(shè)計t

          基于STM32的PWM音樂播放器應(yīng)用設(shè)計t

          作者: 時間:2012-12-07 來源:網(wǎng)絡(luò) 收藏

          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(外部時鐘源),對于F103,其外部時鐘為8 MHz,而F107外部時鐘為25 MHz,因此,在使用HSE做時鐘源時,這兩種器件產(chǎn)生SYSCLK的分頻和倍頻方式不同,需要使用者引起注意。

          本文引用地址:http://www.ex-cimer.com/article/192927.htm


          j.JPG

          3 用控制蜂鳴器播放音樂
          3.1 硬件電路設(shè)計
          蜂鳴器電路如圖2所示。需要注意的是,有源蜂鳴器是以固定頻率工作,加電即可鳴叫,無源蜂鳴器可以用不同頻率輸入信號來控制發(fā)聲,因此,需要選擇無源蜂鳴器。核心控制器件選擇F103VET6,其引腳PB5連接到BEEP。由電路可知,當(dāng)PB5為高電平時,蜂鳴器可工作,只要控制PB5高低電平輸出形成的矩形波的頻率就可以控制蜂鳴器演奏音樂。

          a.JPG


          3.2 程序設(shè)計
          3.2.1 制作樂譜
          音階的產(chǎn)生依賴于輸出信號的頻率。為了簡化設(shè)計,我們令定時器的TIM_Period為1 999,且占空比始終為50%,根據(jù)式(1)則TIM_ Pulse為1000。此時,輸出信號頻率僅與定時器預(yù)分頻系數(shù)TIM_Prescaler有關(guān),只需要調(diào)整該系數(shù),即可得到所需信號頻率。
          TIM_Prescaler由下式得到:
          d.JPG
          式(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)代碼如下:
          a.JPG

          pwm相關(guān)文章:pwm是什么


          pwm相關(guān)文章:pwm原理


          蜂鳴器相關(guān)文章:蜂鳴器原理


          關(guān)鍵詞: STM PWM 32 音樂播放器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();