




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
定時(shí)器與計(jì)數(shù)器6.1STM32的時(shí)鐘系統(tǒng)6.2定時(shí)器6.3STM32的通用定時(shí)器組習(xí)題6
本章要點(diǎn)
☆時(shí)鐘系統(tǒng)的工作原理與結(jié)構(gòu),STM32降低處理器功耗和電磁干擾的時(shí)鐘方法
☆STM32定時(shí)器的種類(lèi)、特點(diǎn)及應(yīng)用范圍
☆STM32定時(shí)器進(jìn)行定時(shí)、脈寬及周期測(cè)量、PWM輸出等的工作原理和使用方法
6.1
STM32的時(shí)鐘系統(tǒng)
時(shí)鐘是所有計(jì)算機(jī)的脈搏。處理器在時(shí)鐘驅(qū)動(dòng)下完成指令讀取、譯碼、執(zhí)行以及狀態(tài)變換等動(dòng)作;外設(shè)在時(shí)鐘驅(qū)動(dòng)下完成串口數(shù)據(jù)收/
發(fā)、A/D或D/A轉(zhuǎn)換、定時(shí)器計(jì)數(shù)等工作。
6.1.1
32
位處理器時(shí)鐘系統(tǒng)
51
單片機(jī)采用石英晶體和振蕩電路構(gòu)成的時(shí)鐘模塊,來(lái)為系統(tǒng)提供時(shí)鐘脈沖。此類(lèi)時(shí)鐘電路結(jié)構(gòu)簡(jiǎn)單,輸出時(shí)鐘的頻率取決于石英晶體的諧振頻率,且只有單一頻率時(shí)鐘輸出,常見(jiàn)的有6
MHz、8
MHz、12
MHz
和24
MHz
等。受加工工藝等因素影響,高頻石英晶體成本較高,對(duì)需要頻率為72
MHz(STM32F103xx系列)或高達(dá)168
MHz
時(shí)鐘信號(hào)的處理器(如STM32F4x7
系列),常以鎖相環(huán)(技術(shù)把低頻時(shí)鐘信號(hào)升頻/
倍頻到一個(gè)較高頻率,基于PLL技術(shù)的時(shí)鐘系統(tǒng)框圖如圖6.1
所示。圖6.1
PLL系統(tǒng)組成框圖
以此為基礎(chǔ),為滿(mǎn)足低功耗、外設(shè)日益多樣化的要求,現(xiàn)代處理器(如STM32F103xx)時(shí)鐘系統(tǒng)框圖如圖6.2
所示,主要由振蕩器(或信號(hào)源)、倍頻用鎖相環(huán)PLL以及分頻器等組成。上電復(fù)位后,硬件電路在檢測(cè)到振蕩器工作穩(wěn)定后輸出時(shí)鐘信號(hào)Ref_Clk,Ref_Clk經(jīng)PLL被9
倍頻到一個(gè)滿(mǎn)足處理器運(yùn)行需要的頻率———Sys_Clk(72
MHz),供給處理器內(nèi)核以及外設(shè)。針對(duì)外設(shè)不同的工作速度需求,可以通過(guò)合理的分頻比設(shè)置,把Sys_Clk降低到一個(gè)合適的頻率供外設(shè)使用。圖6.2
STM32F103xx時(shí)鐘系統(tǒng)框圖
6.1.2
STM32處理器時(shí)鐘系統(tǒng)框圖
STM32片內(nèi)除ARMCortex-M3
內(nèi)核,還有眾多用途各異的外設(shè),既有需要高速時(shí)鐘的外設(shè),如48
MHz
全速USB2.0
模塊,也有工作頻率低至32
kHz
的RTC(實(shí)時(shí)時(shí)鐘模塊)以及部分閑置未用外設(shè),對(duì)此STM32采用圖6.3
所示時(shí)鐘管理系統(tǒng),說(shuō)明見(jiàn)表6.1。
由圖6.3
可見(jiàn),STM32時(shí)鐘系統(tǒng)采用多時(shí)鐘源、多PLL、多分頻器(預(yù)分頻器AHB、APB1
和APB2
以及眾多的外設(shè)分頻器)和可門(mén)控時(shí)鐘輸出的結(jié)構(gòu),因而未被使用的功能、端口及外設(shè)模塊的時(shí)鐘可不使能,降低了系統(tǒng)動(dòng)態(tài)功耗。圖6.3
STM32時(shí)鐘管理系統(tǒng)
其次,除USB、RTC、IWDG
等少數(shù)幾個(gè)外設(shè)外,處理器內(nèi)核及其他外設(shè)的時(shí)鐘都是基于SysClk,主要有:
6.1.3
STM32時(shí)鐘源
1.
高速外部時(shí)鐘(HSE)
HSE有外接石英晶體/
陶瓷諧振器和信號(hào)源這兩種獲取時(shí)鐘信號(hào)的模式,見(jiàn)表6.2。
外接信號(hào)源(又稱(chēng)HSE旁路模式):此模式下,由OSC_IN引腳接入外部時(shí)鐘信號(hào)(頻率最高50
MHz)。
外接石英晶體/
陶瓷諧振器(HSE晶體):OSC_IN
和OSC_OUT引腳接石英晶體或陶瓷諧振器(頻率3~25
MHz)。
2.
高速內(nèi)部時(shí)鐘(HSI)
無(wú)需任何外部器件,HSI
時(shí)鐘信號(hào)可由內(nèi)部8
MHz
的RC振蕩器生成。它的啟動(dòng)時(shí)間比HSE晶體振蕩器短,但頻率精度較差。
RC振蕩器原理決定了即使在出廠時(shí)按1%(25℃)精度對(duì)RC振蕩器的頻率進(jìn)行了校準(zhǔn),電壓或環(huán)境溫度變化仍將影響RC振蕩器的頻率。
3.
鎖相環(huán)(PLL)
在使能每個(gè)PLL之前必須完成PLL的配置(選擇時(shí)鐘源、預(yù)分頻系數(shù)和倍頻系數(shù)等),并且應(yīng)該在輸入時(shí)鐘穩(wěn)定后才能將其使能。
在切換主PLL(PLLMUL)輸入時(shí)鐘源時(shí),必須先確定新時(shí)鐘源(即設(shè)置時(shí)鐘配置寄存器RCC_CFGR相應(yīng)的PLLSRC),之后才能關(guān)閉原來(lái)的時(shí)鐘源。
4.
低速外部時(shí)鐘(LSE)
LSE
時(shí)鐘的產(chǎn)生方式類(lèi)似于HSE時(shí)鐘,參見(jiàn)表6.2。
外接信號(hào)源(LSE
旁路):OSC32_IN引腳外接一個(gè)32.768
kHz
的時(shí)鐘源。備份域控制寄存器RCC_BDCR的LSEBYP和LSEON位來(lái)啟用這個(gè)模式。
外接石英晶體/
陶瓷諧振器:OSC32_IN和OSC32_UOT引腳接32.768
kHz
石英晶體/
陶瓷諧振器。LSE
晶體振蕩器經(jīng)RCC_BDCR
的LSEON
位啟動(dòng)和關(guān)閉,LSERDY位指示晶體振蕩器是否穩(wěn)定。
5.
低速內(nèi)部時(shí)鐘(LSI)
LSI
時(shí)鐘由片內(nèi)RC振蕩器(停機(jī)和待機(jī)模式下仍然運(yùn)行)驅(qū)動(dòng),可作為獨(dú)立看門(mén)狗和自動(dòng)喚醒單元時(shí)鐘。
LSI
時(shí)鐘頻率約40kHz(30~60kHz
范圍內(nèi))。LSI
振蕩器由時(shí)鐘控制狀態(tài)寄存器RCC_CSR的LSION位來(lái)啟動(dòng)或關(guān)閉,LSIRDY
位指示其是否穩(wěn)定。
注意:只有大容量和互聯(lián)型產(chǎn)品才可以進(jìn)行LSI
校準(zhǔn)。
6.1.4
SYSCLK時(shí)鐘源切換
系統(tǒng)復(fù)位后,HSI
時(shí)鐘被選為系統(tǒng)時(shí)鐘。
SYSCLK時(shí)鐘源切換:只有當(dāng)被選用的目標(biāo)時(shí)鐘源準(zhǔn)備就緒即已穩(wěn)定,從一個(gè)時(shí)鐘源到另一個(gè)時(shí)鐘源的切換才會(huì)發(fā)生;當(dāng)時(shí)鐘源被直接或通過(guò)PLL間接作為系統(tǒng)時(shí)鐘時(shí),它將不能被停止。
6.1.5時(shí)鐘安全系統(tǒng)(CSS)
時(shí)鐘安全系統(tǒng)(CSS)被軟件激活后,一旦HSE振蕩器穩(wěn)定則有一個(gè)監(jiān)測(cè)HSE狀態(tài)的時(shí)鐘監(jiān)視器被硬件使能,在監(jiān)測(cè)到HSE失效后又被硬件關(guān)閉。
注意:必須在NMI中斷函數(shù)中通過(guò)設(shè)置時(shí)鐘中斷寄存器RCC_CIR的CSSC位來(lái)清除CSS中斷。否則,NMI將不斷被執(zhí)行。
6.1.6時(shí)鐘輸出
在對(duì)GPIO端口進(jìn)行相應(yīng)配置后,STM32處理器允許經(jīng)MCO引腳輸出時(shí)鐘信號(hào)。SY?SCLK、HSI、HSE和PLLx(或PLLx/2)共四類(lèi)時(shí)鐘信號(hào)可被選作MCO輸出時(shí)鐘源,具體選擇由時(shí)鐘配置寄存器RCC_CFGR
中的MCO[2:0]控制。
6.1.7
STM32時(shí)鐘初始化
由前述可知,STM32系統(tǒng)運(yùn)行性能取決于內(nèi)核時(shí)鐘頻率,其穩(wěn)定性、可靠性、低功耗以及EMI
也取決于時(shí)鐘系統(tǒng),正確、合理地進(jìn)行時(shí)鐘系統(tǒng)初始化是保證整個(gè)系統(tǒng)成功運(yùn)行的前提。
STM32時(shí)鐘系統(tǒng)的初始化包括兩部分的內(nèi)容:
(1)確定SYSCLK
時(shí)鐘源及頻率:依據(jù)處理器系列確定SYSCLK最高頻率,再結(jié)合性能、用戶(hù)需求和功耗要求等進(jìn)行選擇,最后修改System_STM32f10x.c中的相關(guān)內(nèi)容。
在此配置下,STM32F103xx時(shí)鐘系統(tǒng)主要信號(hào)缺省頻率見(jiàn)表6.3。
(2)開(kāi)啟外設(shè)時(shí)鐘:結(jié)合外設(shè)和應(yīng)用需求,合理設(shè)置分頻比,在用戶(hù)程序中使能時(shí)鐘。
6.2定時(shí)器
嵌入式系統(tǒng)經(jīng)常要為處理器和外設(shè)設(shè)定時(shí)間標(biāo)記,執(zhí)行與時(shí)間相關(guān)的控制或?qū)ν獠渴录M(jìn)行計(jì)數(shù),如分時(shí)系統(tǒng)周期性的任務(wù)切換、定時(shí)測(cè)量掃描、定時(shí)開(kāi)關(guān)設(shè)備、記錄外部事件的次數(shù)等。凡是跟時(shí)間有關(guān)的工作都要借助定時(shí)器(計(jì)數(shù)器)技術(shù)來(lái)實(shí)現(xiàn)。
6.2.1定(延)時(shí)基本方法
常用的定(延)時(shí)方法有以下三種:
(1)軟件延時(shí):對(duì)特定的處理器而言,每條指令都有固定的執(zhí)行周期,因而可以令CPU
執(zhí)行一段“空”程序來(lái)實(shí)現(xiàn)延時(shí)(等待)。
(2)硬件電路延時(shí):采用附加的數(shù)字電路產(chǎn)生特定的延時(shí),如555
單穩(wěn)態(tài)延時(shí)電路。此方法的優(yōu)點(diǎn)是電路簡(jiǎn)單,不占用CPU
時(shí)間,但改變延時(shí)時(shí)間需要調(diào)整電路參數(shù),通用性和靈活性差;時(shí)間精度受電路參數(shù)影響,穩(wěn)定性差。
(3)可編程定時(shí)器(計(jì)數(shù)器)產(chǎn)生延時(shí)(定時(shí)):以專(zhuān)用定時(shí)芯片(Intel
8253
等)或處理器中集成的定時(shí)器外設(shè)來(lái)進(jìn)行定時(shí)。初始化完成后,定時(shí)器就以設(shè)定的方式獨(dú)立于CPU
開(kāi)始運(yùn)行,或者產(chǎn)生高精度的定時(shí)間隔,或者對(duì)外部事件進(jìn)行計(jì)數(shù),用戶(hù)視需要可以隨時(shí)修改其運(yùn)行參數(shù)甚至功能。
6.2.2定時(shí)器的一般工作原理
定時(shí)器(計(jì)數(shù)器)的核心是一個(gè)計(jì)數(shù)器,在計(jì)數(shù)脈沖每一次有效沿,計(jì)數(shù)器的數(shù)值將加1
或減1。當(dāng)計(jì)數(shù)脈沖連接至處理器時(shí)鐘時(shí),由于其周期已知且穩(wěn)定,脈沖數(shù)多少即代表時(shí)間的長(zhǎng)短,因此稱(chēng)它為定時(shí)器。當(dāng)計(jì)數(shù)的脈沖來(lái)自處理器外部(經(jīng)引腳輸入)時(shí),由于其周期不確定,故被稱(chēng)為計(jì)數(shù)器。定時(shí)器(計(jì)數(shù)器)的應(yīng)用多與時(shí)間相關(guān),故一般簡(jiǎn)稱(chēng)為定時(shí)器。
1.
定時(shí)器的一般構(gòu)成
定時(shí)器以標(biāo)準(zhǔn)時(shí)鐘作為計(jì)數(shù)標(biāo)準(zhǔn),可提供高精度的時(shí)間測(cè)量和作為高精度限時(shí)器。其一般原理如圖6.4
所示。圖6.4定時(shí)器的一般構(gòu)成
2.
計(jì)數(shù)器的啟動(dòng)(觸發(fā))方式
計(jì)數(shù)器的觸發(fā)方式是指確定“從什么時(shí)間開(kāi)始計(jì)數(shù)”的方式。計(jì)數(shù)器有內(nèi)觸發(fā)和外觸發(fā)兩種觸發(fā)方式。
內(nèi)觸發(fā)是一種軟件觸發(fā)方式。其計(jì)數(shù)開(kāi)始時(shí)刻由軟件決定,一般是用某種軟件令觸發(fā)計(jì)數(shù)器開(kāi)始運(yùn)行??梢栽趯?xiě)時(shí)間常數(shù)的同時(shí)把計(jì)數(shù)器運(yùn)行觸發(fā)器置“1”,或者用軟件觸發(fā)命令使其運(yùn)行??傊?,內(nèi)觸發(fā)之后,計(jì)數(shù)器自動(dòng)開(kāi)始計(jì)數(shù)。
外觸發(fā)是用外部信號(hào)觸發(fā)計(jì)數(shù)器開(kāi)始工作,以使計(jì)數(shù)器的工作與某種外部信號(hào)同步?;蛘呃迷撔盘?hào)的上升沿,或者用其下降沿。這種觸發(fā)方式又稱(chēng)硬件觸發(fā)。
有的計(jì)數(shù)器還有門(mén)控(GATE)信號(hào),比如,該信號(hào)為高電平時(shí),計(jì)數(shù)器計(jì)數(shù);為低電平時(shí),停止計(jì)數(shù)(但不復(fù)位)。它也可用作計(jì)數(shù)器的外觸發(fā)信號(hào)。
3.
定時(shí)器(計(jì)數(shù)器)在計(jì)算機(jī)中的應(yīng)用
計(jì)時(shí)器在計(jì)算機(jī)中有廣泛的用途,是計(jì)算機(jī)不可缺少的部件,其主要用途如下:
(1)用作硬件延時(shí)器,相比軟件延時(shí)可節(jié)約大量CPU
工作時(shí)間,以用于其運(yùn)算和處理。
(2)用作周期中斷觸發(fā)源,以進(jìn)行DRAM
刷新、時(shí)鐘管理、定時(shí)查詢(xún)以及A/D及D/A變換的時(shí)間間隔控制等。
(3)用作波特率發(fā)生器、方波發(fā)生器等,以生成固定波形。
(4)用作可重復(fù)觸發(fā)的單穩(wěn)態(tài)電路,以用于事件間隔限時(shí)器。
如圖6.5
所示,正常情況下,若觸發(fā)間隔不超出計(jì)時(shí)間隔τ,單穩(wěn)輸出處于暫態(tài);若超出τ,它將自動(dòng)返回到穩(wěn)態(tài)而產(chǎn)生中斷。圖6.5限時(shí)器的工作原理
6.2.3
STM32定時(shí)器概述
STM32F103xx系列片內(nèi)除ARM
Cortex-M3
內(nèi)核系統(tǒng)定時(shí)器SysTIck、1
個(gè)實(shí)時(shí)時(shí)鐘(RTC)和2
個(gè)看門(mén)狗定時(shí)器外,隨Flash
容量和引腳數(shù)不同最多可以有2
個(gè)高級(jí)控制定時(shí)器、4
個(gè)通用定時(shí)器、4
個(gè)簡(jiǎn)化定時(shí)器(
SysTIck、IWDG、WWDG和RTC)和2
個(gè)基本定時(shí)器(見(jiàn)表6.4)。
由表6.4
可知,STM32通用定時(shí)器除了通常意義上的可產(chǎn)生預(yù)定時(shí)間間隔的定時(shí)中斷和對(duì)外部輸入信號(hào)計(jì)數(shù)的功能外,它還能進(jìn)行輸入捕獲、輸出比較、脈寬調(diào)制輸出和PWM輸入等操作,滿(mǎn)足大多數(shù)應(yīng)用場(chǎng)合對(duì)定時(shí)器的要求。系統(tǒng)定時(shí)器、看門(mén)狗以及基本定時(shí)器可以看作通用定時(shí)器的簡(jiǎn)化版或?qū)S冒?。而高?jí)定時(shí)器則是通用定時(shí)器在PWM輸出功能上的強(qiáng)化——為產(chǎn)生三相互補(bǔ)PWM信號(hào)提供硬件支持(如死區(qū)時(shí)間設(shè)置、剎車(chē)信號(hào)等),這為其在三相交流變頻調(diào)速等相關(guān)領(lǐng)域的應(yīng)用奠定了基礎(chǔ),故后續(xù)以通用定時(shí)器為代表來(lái)介紹STM32的定時(shí)器。
6.3
STM32的通用定時(shí)器
在STM32F103ZE中,TIM2~TIM5
皆為通用定時(shí)器,為便于敘述統(tǒng)稱(chēng)為T(mén)IMx。定時(shí)器輸入、輸出信號(hào)見(jiàn)表6.5。
圖6.6
為通用定時(shí)器結(jié)構(gòu)框圖,從圖中可以看出STM32的通用定時(shí)器分為時(shí)基單元、輸入捕獲單元和輸出比較單元三大部分。圖6.6通用定時(shí)器結(jié)構(gòu)框圖
6.3.1
STM32定時(shí)器工作原理分析
1.
影子寄存器
影子寄存器在處理器內(nèi)對(duì)應(yīng)2
個(gè)寄存器,一個(gè)是軟件可以隨時(shí)進(jìn)行讀/
寫(xiě)操作的寄存器——預(yù)加載寄存器另一個(gè)是對(duì)程序不可見(jiàn),但在處理器運(yùn)行過(guò)程中真正起作用的寄存器——影子寄存器。圖6.6
中標(biāo)有陰影的寄存器,如自動(dòng)重加載寄存器ARR、計(jì)數(shù)器時(shí)鐘預(yù)分頻器PSC以及捕獲/
比較寄存器CCRx等就屬此類(lèi)寄存器。
借助影子寄存器技術(shù),可以保證相關(guān)的所有寄存器的值在同一個(gè)時(shí)刻(更新事件出現(xiàn)時(shí))被更新,因此保證了定時(shí)器多通道操作在時(shí)間上嚴(yán)格同步。否則,首先因程序順序執(zhí)行的原因,各寄存器的更新勢(shì)必有先后之分,就會(huì)造成各通道間時(shí)序的不同步,如果再加上其他因素(如中斷),則多通道間的時(shí)序關(guān)系有可能是不可預(yù)知的。
2.
輸入信號(hào)濾波
用定時(shí)器統(tǒng)計(jì)、測(cè)量外部信號(hào)的出現(xiàn)次數(shù)、持續(xù)時(shí)間等,都需要把外部信號(hào)經(jīng)引腳引入定時(shí)器內(nèi)部以供處理,但外部引入的信號(hào)往往含有偶發(fā)性的噪聲,應(yīng)采用技術(shù)手段消除。模擬量的偶發(fā)性噪聲消除算法有算術(shù)平均濾波、中位值濾波、加權(quán)遞推平均濾波、一階滯后濾波和消抖濾波等。
STM32定時(shí)器在外部觸發(fā)信號(hào)ETR和4
路輸入捕獲通道TIMx_CHx上皆設(shè)有基于多次采樣表決法的硬件濾波器(輸入濾波器),輸入濾波器本質(zhì)上是事件變化“計(jì)時(shí)器”,通過(guò)對(duì)輸入信號(hào)按某一頻率進(jìn)行采樣,當(dāng)連續(xù)采樣到N次“新”電平后,即信號(hào)“新”值保持超
過(guò)特定時(shí)長(zhǎng),是“永久”和“穩(wěn)定”的,才認(rèn)為是一次有效的輸入變化,從而濾除了輸入信號(hào)中的窄脈沖干擾。結(jié)合輸入濾波器,可以由硬件實(shí)現(xiàn)類(lèi)似軟件去除按鍵抖動(dòng)的功能,完全不需要軟件干預(yù),節(jié)省了CPU
時(shí)間。
3.
定時(shí)器時(shí)鐘源
為實(shí)現(xiàn)外部事件計(jì)數(shù)、外部信號(hào)脈寬測(cè)量、定時(shí)范圍擴(kuò)展等功能,定時(shí)器除內(nèi)部時(shí)鐘脈沖CK_INT外,還有ETRF、ITRx和TIxx等時(shí)鐘源(分頻比1~65
536),ETR時(shí)鐘還另外有1、2、4、8
四個(gè)分頻比。
(2)外部時(shí)鐘模式1:以觸發(fā)輸入TRGI
作為定時(shí)器時(shí)鐘源,可供選擇的時(shí)鐘源有ITR0~I(xiàn)TR3(來(lái)自其他通用/
高級(jí)定時(shí)器的TRGO)、TI1F_ED(通道1
有效跳變)、TI1FP1(通道1
有效沿)、TI2FP2(通道2
有效沿)和ETRG(外部觸發(fā)信號(hào)),如圖6.7
所示。此模式下,ETRG作為時(shí)鐘源時(shí),還需考慮ETR信號(hào)本身預(yù)分頻比的影響,除ETRG作為時(shí)鐘源外:圖6.7外部時(shí)鐘模式1(TI1F_ED為時(shí)鐘源)
(3)外部時(shí)鐘模式2:即以外部觸發(fā)ETR
作為計(jì)數(shù)時(shí)鐘,如圖6.8
所示。首先在TIMx_SMCR
中配置ETR的輸入模式(ETP
有效沿檢測(cè)、ETPS[1:0]預(yù)分頻比、ETF[3:0]濾波),最后置ECE=1
選擇ETRF
為計(jì)數(shù)時(shí)鐘源。
提示:外部時(shí)鐘模式2
與外部時(shí)鐘模式1
下,將TRGI連到ETRF(TTS[2:0]=111、SMS[2:0]=111)實(shí)現(xiàn)的功能相同,皆是以ETRF
為計(jì)數(shù)時(shí)鐘。
STM32眾多可選的時(shí)鐘源為滿(mǎn)足定時(shí)器多種應(yīng)用需求奠定了基礎(chǔ),時(shí)鐘源的選用見(jiàn)表6.6。圖6.8外部時(shí)鐘模式2
6.3.2時(shí)基
圖6.9
是對(duì)圖6.6
時(shí)基部分的簡(jiǎn)化。以向上計(jì)數(shù)為例,定時(shí)器初始化完成后,被選作計(jì)數(shù)器時(shí)鐘源的時(shí)鐘信號(hào)CK_PSC
經(jīng)預(yù)分頻器分頻后作為計(jì)數(shù)脈沖施加到計(jì)數(shù)器上,計(jì)數(shù)值隨著時(shí)鐘脈沖CK_CNT
開(kāi)始從0
開(kāi)始遞增;當(dāng)計(jì)數(shù)到自動(dòng)重加載值(
TIMx_ARR值)后又重新從0
開(kāi)始新一輪計(jì)數(shù),同時(shí)產(chǎn)生計(jì)數(shù)器(向上)溢出事件。圖6.9通用定時(shí)器時(shí)基單元
內(nèi)部時(shí)鐘源、預(yù)分頻比=1
模式下,圖6.10~圖6.12
分別為計(jì)數(shù)器向上、向下和向上/向下計(jì)數(shù)時(shí)序圖。圖6.10向上計(jì)數(shù)時(shí)序圖(TIMx_ARR=0x49)圖6.11向下計(jì)數(shù)時(shí)序圖(TIMx_ARR=0x49)圖6.12向上/
向下計(jì)數(shù)時(shí)序圖(TIMx_ARR=0x06)
1.
更新事件(UEV)
更新事件,顧名思義與寄存器值更新相關(guān),準(zhǔn)確地說(shuō)是與影子寄存器的更新有關(guān),具體情況見(jiàn)表6.7。
預(yù)加載控制、更新事件對(duì)影子寄存器寫(xiě)操作的影響如圖6.13
所示。圖6.13
TIMx_ARR賦值時(shí)序圖圖6.13
TIMx_ARR賦值時(shí)序圖
2.
更新中斷/
DMA請(qǐng)求
控制寄存器TIMx_CR1
的更新請(qǐng)求源URS=0
時(shí),能夠觸發(fā)更新事件的事件都可產(chǎn)生更新中斷/
DMA請(qǐng)求,而當(dāng)URS=1
時(shí),只有計(jì)數(shù)器溢出能夠產(chǎn)生更新中斷/
DMA請(qǐng)求。
6.3.3輸出比較模式
對(duì)定時(shí)器(計(jì)數(shù)器)進(jìn)行改進(jìn),使它能更精確地測(cè)量事件發(fā)生的時(shí)間,這就是輸入捕獲和輸出比較功能。
1.
輸出比較
輸出比較原理如圖6.14
所示,其電路由計(jì)數(shù)器、比較器、輸出比較寄存器和輸出邏輯組成。
計(jì)數(shù)器在給定標(biāo)準(zhǔn)時(shí)鐘驅(qū)動(dòng)下工作。比較寄存器給出比較值,當(dāng)計(jì)數(shù)值達(dá)到比較值時(shí),可以產(chǎn)生中斷請(qǐng)求,并能驅(qū)動(dòng)輸出邏輯產(chǎn)生給定電平的輸出信號(hào)。圖6.14比較器輸出原理
2.
STM32輸出比較配置
輸出比較功能由一個(gè)捕獲/
比較寄存器TIMx_CCRx和計(jì)數(shù)器TIMx_CNT以及相應(yīng)輸出
部分(比較器和輸出控制)組成,如圖6.15
所示(以TIMx_CH1
通道為例)。圖6.15定時(shí)器輸出比較功能框圖
其工作時(shí)序如圖6.16
所示。圖6.16定時(shí)器輸出比較時(shí)序
圖6.15
中,TIMx
計(jì)數(shù)運(yùn)行時(shí),計(jì)數(shù)值與TIMx_CCR1
事先設(shè)定值做對(duì)比,如果兩者相等,則執(zhí)行如下操作:
·設(shè)置通道輸出值:輸出比較模式OC1M[2:0](捕獲/
比較模式寄存器TIMx_CCMR1中)決定中間信號(hào)OC1REF值(“高”有效),OC1REF
和輸出有效極性選擇位CC1P(捕獲/比較使能寄存器TIMx_CCER
中)參照表6.8
決定OC1
輸出值。
·設(shè)置狀態(tài)寄存器TIMx_SR
的捕獲/
比較CC1IF
標(biāo)志位。
·如DMA/
中斷使能寄存器TIMx_DIER
中CC1IE=1
則產(chǎn)生通道1
的捕獲/
比較中斷請(qǐng)求,CC1IE=1
且控制寄存器TIMx_CR2
的CCDS=0,則產(chǎn)生相應(yīng)DMA
請(qǐng)求。
輸出比較模式的配置:
(1)選擇配置計(jì)數(shù)器時(shí)鐘(內(nèi)部或外部時(shí)鐘,預(yù)分頻器)。
(2)根據(jù)計(jì)數(shù)脈沖頻率和輸出信號(hào)參數(shù),計(jì)算TIMx_ARR和TIMx_CCRx寄存器值。
(3)寄存器TIMx_CCMRx中OCxM[2:0]選擇比較模式(參照表6.9),寄存器TIMx_CCMR中CCxP選擇輸出極性。
(4)如果要產(chǎn)生一個(gè)中斷/
DMA請(qǐng)求,設(shè)置TIMx_DIER寄存器的CCxIE、CCxDE位,
清除TIMx_CR2
的CCDS位。
(5)設(shè)置輸出比較使能寄存器TIMx_CCER中CCxE使能通道輸出。
(6)設(shè)置TIMx_CR1
寄存器的CEN位啟動(dòng)計(jì)數(shù)器。
輸出翻轉(zhuǎn)是一旦計(jì)數(shù)值等于比較值,則翻轉(zhuǎn)OCxREF
狀態(tài),從而使得相應(yīng)輸出通道引腳狀態(tài)翻轉(zhuǎn),翻轉(zhuǎn)頻率為
【例6.2】
STM32運(yùn)行頻率72
MHz,APB1
時(shí)鐘頻率36MHz,TIM2
選用內(nèi)部時(shí)鐘,時(shí)鐘預(yù)分頻比=1。要求由PA0
引腳輸出10
Hz
方波。
分析:PA0
引腳系定時(shí)器TIM2_CH1
復(fù)用引腳,因而能以定時(shí)器的輸出比較翻轉(zhuǎn)功能實(shí)現(xiàn)純硬件支持方波輸出,占用CPU
時(shí)間最少。由于硬件實(shí)現(xiàn)翻轉(zhuǎn),不需要軟件參與,故較例6.1
除了占用CPU
時(shí)間少外,還有輸出波形穩(wěn)定、定時(shí)精度高的優(yōu)點(diǎn)。
代碼主要為:配置PA10
引腳復(fù)用模式、配置TIM2
時(shí)基和TIM2_CH1
通道等,初始化TIM2,使之產(chǎn)生20
Hz
的計(jì)數(shù)溢出(更新事件)中斷。
6.3.4
PWM輸出
1.
脈寬調(diào)制(PWM)
PWM是一種利用周期性脈沖信號(hào)的不同占空比表示不同信息的數(shù)字調(diào)制方式。通過(guò)調(diào)節(jié)波形的占空比和相位,利用PWM可以產(chǎn)生精確脈沖序列輸出,能夠用于交直流電動(dòng)機(jī)調(diào)速、伺服電動(dòng)機(jī)控制、D/A轉(zhuǎn)換器等應(yīng)用。例如,智能LED燈采用8
位PWM產(chǎn)生三基色幅值控制電壓實(shí)現(xiàn)1600
萬(wàn)種顏色輸出。圖6.17直流電機(jī)PWM調(diào)速
2.
STM32PWM輸出配置
STM32產(chǎn)生PWM信號(hào)的方法主要有兩種:軟件編程實(shí)現(xiàn)和利用定時(shí)器PWM輸出模塊實(shí)現(xiàn)。利用軟件編程可以設(shè)定輸出任意脈沖信號(hào),但會(huì)占用CPU
時(shí)間,而且不易產(chǎn)生高精度的脈沖序列;而定時(shí)器PWM輸出模塊專(zhuān)門(mén)用于輸出PWM信號(hào),精度高,使用時(shí)極少占用CPU
時(shí)間。
3.
邊沿對(duì)齊PWM
計(jì)數(shù)器采用向上或向下計(jì)數(shù)方式,其計(jì)數(shù)值和捕獲/
比較寄存器TIMx_CCRx值比較就會(huì)產(chǎn)生占空比從計(jì)數(shù)值0
或自動(dòng)加載值處開(kāi)始計(jì)算的PWM脈沖,即邊沿對(duì)齊PWM。圖6.18
為邊沿對(duì)齊(左對(duì)齊)PWM波形。
圖6.19
為不同占空比下,左對(duì)齊PWM波形時(shí)序圖。由圖可見(jiàn),STM32定時(shí)器的左對(duì)齊PWM能夠輸出占空比為0~100%的PWM脈沖。圖6.19左對(duì)齊PWM占空比
計(jì)數(shù)器采用向下計(jì)數(shù),在PWM1
模式下即可產(chǎn)生邊沿右對(duì)齊PWM波形,如圖6.20
所示。在此模式下,STM32定時(shí)器不能輸出占空比=0%的PWM脈沖。圖6.20右對(duì)齊PWM
4.
中央對(duì)齊PWM
中央對(duì)齊PWM是計(jì)數(shù)器采用向上/
向下計(jì)數(shù)方式所形成的PWM波形,如圖6.21所示。圖6.21中央對(duì)齊(居中對(duì)齊)PWM
左對(duì)齊PWM適用于大多數(shù)PWM使用場(chǎng)合。右對(duì)齊通常僅用于需要與左對(duì)齊PWM相反對(duì)齊方式的特殊場(chǎng)合。中心對(duì)齊PWM大多用于交流電機(jī)變頻調(diào)速控制以保證三相相位對(duì)齊。邊沿、中央對(duì)齊方式下,PWM輸出技術(shù)指標(biāo)見(jiàn)表6.10。
【例6.3】
STM32運(yùn)行頻率72
MHz(,APB1
時(shí)鐘頻率36MHz,TIM2
選用內(nèi)部時(shí)鐘,時(shí)鐘預(yù)分頻比=1。要求從TIM2_CH1(即PA0
引腳)輸出頻率為100
Hz,占空比10%、高電平有效的脈沖信號(hào)。
分析:信號(hào)從定時(shí)器復(fù)用引腳輸出,故可以利用定時(shí)器PWM輸出功能產(chǎn)生所需的脈沖信號(hào)。由于PWM輸出涉及定時(shí)器時(shí)基和輸出比較兩大單元,因而需分別對(duì)時(shí)基和輸出比較單元進(jìn)行初始化,另外需配置PA0
為復(fù)用輸出。主要代碼如下:
6.3.5輸入捕獲
輸入捕獲是指通過(guò)對(duì)引腳輸入信號(hào)電平變化的監(jiān)測(cè),在發(fā)現(xiàn)電平變化時(shí),保存計(jì)數(shù)器值到輸入捕捉寄存器中,同時(shí)設(shè)置輸入捕獲狀態(tài)標(biāo)志位;如果中斷允許,則向CPU
發(fā)出中斷請(qǐng)求,進(jìn)而實(shí)現(xiàn)對(duì)事件發(fā)生間隔時(shí)間的測(cè)量以及對(duì)實(shí)時(shí)事件的響應(yīng)。輸入捕獲功能業(yè)已應(yīng)用于雷達(dá)測(cè)速、超聲波測(cè)距、發(fā)動(dòng)機(jī)轉(zhuǎn)速以及車(chē)速等的測(cè)量上。
1.
信號(hào)周期測(cè)量
輸入捕獲功能由被捕獲信號(hào)輸入部分(數(shù)字濾波、邊沿檢測(cè)和預(yù)分頻器),捕獲/
比較寄存器TIMx_CCRx以及計(jì)數(shù)器CNT組成,如圖6.22
所示(以TIMx_CH1
通道為例)。圖6.22定時(shí)器輸入捕獲功能框圖
圖6.22
中,輸入濾波器對(duì)TI1
輸入信號(hào)采樣濾波得到信號(hào)TI1F,經(jīng)帶極性選擇的邊沿檢測(cè)器后獲得有效沿信號(hào)TI1FP1,進(jìn)而得到輸入捕獲信號(hào)IC1,此信號(hào)再經(jīng)分頻得到IC1PS。當(dāng)一個(gè)有效的IC1PS來(lái)到后,即觸發(fā)捕獲事件,計(jì)數(shù)器當(dāng)前值被鎖存到捕獲/
比較寄存器TIMx_CCR1
中,同時(shí)通道1
捕獲/
比較標(biāo)志CC1IF(TIMx_SR寄存器)被置1,如果使能了中斷/
DMA請(qǐng)求,則將產(chǎn)生中斷或DMA,相關(guān)時(shí)序圖見(jiàn)圖6.23。
注意:設(shè)置TIMx_EGR
寄存器中相應(yīng)的CCxG
位,可以由軟件產(chǎn)生輸入捕獲事件以及相應(yīng)的中斷/
DMA請(qǐng)求。圖6.23輸入捕獲(信號(hào)周期)時(shí)序———TIMx_CH1
1)定時(shí)器配置
以測(cè)量TIMx_CH1
輸入信號(hào)周期為例,參見(jiàn)圖6.23,定時(shí)器配置步驟如下:
2)TIMx_CH1
信號(hào)周期測(cè)量軟件編程
如圖6.23
所示,在信號(hào)第一次有效邊沿到來(lái)后,在中斷函數(shù)中保存TIMx_CCR1
值,設(shè)保存值有效標(biāo)志位,以標(biāo)明已經(jīng)讀入一次輸入捕獲值,退出中斷函數(shù)等待下一個(gè)有效邊沿的到來(lái)。在下一次中斷函數(shù)運(yùn)行中,記錄輸入捕獲寄存器的值,并與上次保存的值相減,將差值乘以計(jì)數(shù)時(shí)鐘周期就是測(cè)量信號(hào)的周期:
2.
PWM輸入模式
在周期測(cè)量基礎(chǔ)上,借助輸入ICx
重映射功能可以實(shí)現(xiàn)對(duì)信號(hào)周期、脈寬的同步測(cè)量———PWM輸入模式(解調(diào)輸入的PWM信號(hào),得到輸入脈沖的寬度和周期,是輸入捕獲的高級(jí)應(yīng)用)。
以測(cè)量TIMx_CH1
輸入信號(hào)脈寬、周期為例,配置操作需要在前述輸入捕獲(周期測(cè)量)配置基礎(chǔ)上,添加以下操作:
·IC1
和IC2
都映射至TI1;IC1
為上升沿有效,IC2
為下降沿有效。
·以TI1FP信號(hào)為觸發(fā)輸入信號(hào),且從模式控制器被配置成復(fù)位模式。
經(jīng)以上配置,即將TI1
上下兩個(gè)邊沿跳變分別映射到了IC1
和IC2,上升沿時(shí)刻被保存在捕獲/
比較寄存器TIMx_CCR1,并復(fù)位計(jì)數(shù)器;下降沿來(lái)到時(shí),其到來(lái)時(shí)刻被保存到TIMx_CCR2,這樣就可通過(guò)TIMx_CCR1
獲取周期,TIMx_CCR2
得到脈寬時(shí)間,如圖6.24所示。圖6.24
PWM輸入模式時(shí)序
信號(hào)周期為
信號(hào)脈寬為
注意:因TI1FP1
和TI2FP2
連接到從模式控制器,所以在STM32標(biāo)準(zhǔn)的PWM輸入模式里,外部被測(cè)信號(hào)只能由TIMx_CH1
或TIMx_CH2
輸入。
6.3.6單脈沖輸出(OnePulseMide,OPM)
單脈沖工作模式是輸入捕獲與輸出比較功能的組合,這種模式允許定時(shí)器在得到一個(gè)激勵(lì)(外部事件)后,經(jīng)過(guò)一段延時(shí)后輸出一個(gè)脈沖作為響應(yīng),延時(shí)時(shí)間及脈沖持續(xù)時(shí)間(脈寬)可編
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45206-2025道地藥材生產(chǎn)技術(shù)規(guī)程丹參
- 幾分包合同范本
- 農(nóng)村耕地流轉(zhuǎn)合同范本
- 產(chǎn)品免責(zé)合同范本
- 倉(cāng)儲(chǔ)臨時(shí)合同范本
- 化妝產(chǎn)品合同范本
- 信息驗(yàn)收合同范例
- 書(shū)法裝裱售賣(mài)合同范本
- 農(nóng)村集體資源招租合同范本
- 免除追償工傷合同范本
- 2024年-ITSS新標(biāo)準(zhǔn)培訓(xùn)學(xué)習(xí)材料
- 第2課《讓美德照亮幸福人生》第2框《做守家庭美德的好成員》-【中職專(zhuān)用】《職業(yè)道德與法治》同步課堂課件
- (正式版)SHT 3227-2024 石油化工裝置固定水噴霧和水(泡沫)噴淋滅火系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- 2024屆廣東省深圳市中考物理模擬試卷(一模)(附答案)
- 前庭功能鍛煉科普知識(shí)講座
- 供應(yīng)鏈戰(zhàn)略布局與區(qū)域拓展案例
- 上海話培訓(xùn)課件
- 注塑車(chē)間績(jī)效考核方案
- 初中英語(yǔ)閱讀理解專(zhuān)項(xiàng)練習(xí)26篇(含答案)
- 誦讀經(jīng)典傳承文明課件
- 高中數(shù)學(xué)選擇性必修3 教材習(xí)題答案
評(píng)論
0/150
提交評(píng)論