微機(jī)原理與嵌入式接口技術(shù)課件:定時(shí)器與計(jì)數(shù)器_第1頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:定時(shí)器與計(jì)數(shù)器_第2頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:定時(shí)器與計(jì)數(shù)器_第3頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:定時(shí)器與計(jì)數(shù)器_第4頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:定時(shí)器與計(jì)數(shù)器_第5頁(yè)
已閱讀5頁(yè),還剩140頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論