<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    使用STM32的單個普通定時器產生4路不同頻率的方波

    發布時間:2009-11-25 17:38    發布者:STM32
    關鍵詞: 定時器 , 方波 , 頻率
    STM32的普通定時器有四路輸出:TIMx_CH1、TIMx_CH2、TIMx_CH3和TIMx_CH4,可以使用輸出比較的方法產生不同頻率的方波輸出,簡單的方法是:

    1)設置計數器為向上計數模式,將自動重裝載寄存器設置為0xFFFF;這樣計數器會循環計數。

    2)每個定時器通道設置為輸出比較模式,并設置比較匹配時對應的輸出管腳翻轉輸出。

    3)按照輸出波形的半波周期計算出一個數值稱作Half_Cyc。例如:定時器的時鐘頻率是72MHz,需要產生3456Hz的方波,則Half_Cyc = 72M/(3456*2) = 41667;如需要產生200kHz的方波,則Half_Cyc = 72M/(200k*2) = 180。

    4)設置每個通道在輸出比較匹配時產生中斷,在中斷中將比較寄存器的數值讀出并加上Half_Cyc的數值,如果計算出的數值超過16位則舍棄超出的部分,再把這個新的數值寫回相應的比較寄存器;這樣下次比較成功將剛好發生在一個半波周期之后,對應的管腳將被翻轉。

    上述方法在要求頻率不高時十分有效,但如果頻率較高時會有頻繁的中斷產生,這時可以使用DMA加以改善。

    上述方法的基礎是通過不斷改變輸出比較的匹配點進而產生管腳翻轉輸出,我們可以事先計算好這些比較匹配點,并通過DMA在每次匹配時逐次更新比較寄存器的內容:

    方法一、使用兩個DMA緩沖區,在DMA控制器操作一個緩沖區時,程序計算好另一個緩沖區的數據,然后在DMA傳輸結束的中斷處理中切換DMA操作的緩沖區。

    方法二、使用一個大的DMA緩沖區,先計算好半個緩沖區的內容,啟動DMA為循環模式并設置它在DMA傳送一半和完成時均產生中斷;啟動DMA后繼續計算好另外半個緩沖區的內容,當發生DMA中斷時表示有一半緩沖區變空,這時在中斷處理中計算好這半個緩沖區。

    只要DMA緩沖區開的足夠大,方法二可以保證CPU有充足的時間進行數據處理,并且保證不斷地輸出波形。

    聲明:以上說明沒有經過實際驗證,只是一個原理說明,也許還有沒考慮周全的地方。

    最初發表日期:2008-7-16
    本文地址:http://www.portaltwn.com/thread-5767-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關在線工具

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷