使用STM32的單個(gè)普通定時(shí)器產(chǎn)生4路不同頻率的方波

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

1)設置計數器為向上計數模式,將自動(dòng)重裝載寄存器設置為0xFFFF;這樣計數器會(huì )循環(huán)計數。

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

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

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

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

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

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

方法二、使用一個(gè)大的DMA緩沖區,先計算好半個(gè)緩沖區的內容,啟動(dòng)DMA為循環(huán)模式并設置它在DMA傳送一半和完成時(shí)均產(chǎn)生中斷;啟動(dòng)DMA后繼續計算好另外半個(gè)緩沖區的內容,當發(fā)生DMA中斷時(shí)表示有一半緩沖區變空,這時(shí)在中斷處理中計算好這半個(gè)緩沖區。

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

聲明:以上說(shuō)明沒(méi)有經(jīng)過(guò)實(shí)際驗證,只是一個(gè)原理說(shuō)明,也許還有沒(méi)考慮周全的地方。

最初發(fā)表日期:2008-7-16
本文地址:http://selenalain.com/thread-5767-1-1.html     【打印本頁(yè)】

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

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页