0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32F03定時器基礎知識基本簡介

冬至子 ? 來源:每一日學 ? 作者:塵埃 ? 2023-07-03 17:08 ? 次閱讀

一、思維導圖

圖片

三、定時器基本簡介

(一)定時器分類

STM32F103微控制器的定時器分為 系統定時器(SysTick) 、 看門狗”定時器(WatchDog)基本定時器通用定時器 、高級定時器實時時鐘(RTC) 等。

  1. 系統定時器(SysTick) :是一個集成在Cortex-M3內核當中的定時器,Cortex-M3內核附帶SysTick的主要目的是 給實時操作系統(RTOS)提供時間基準(時鐘節(jié)拍 ),SysTick是不允許被用戶直接使用的。
  2. “看門狗”定時器(WatchDog) :“看門狗”定時器連接到STM32微控制器芯片的復位電路, 在定時器溢出時會觸發(fā)復位操作 。
  3. 實時時鐘RTC :是一個帶獨立電源供電引腳和獨立時鐘源的定時器,可以實現在芯片主電源斷電情況下的連續(xù)供電,以 確保RTC定時器計數的連續(xù)性 。
  4. 基本定時器 :包括TIM6和TIM7,可以 實現基本的定時/計數功能 。
  5. 通用定時器 :包括TIM2、TIM3、TIM4和TIM5,在基本定時器功能的基礎上,可以 實現比較輸出、輸入捕獲、PWM輸出等功能
  6. 高級定時器 :包括TIM1和TIM8,在通用定時器功能的基礎上, 可以實現PWM輸出的死區(qū)控制 ,這一功能在全控橋逆變電路的控制中是十分關鍵的。

1.jpg

(二)通用定時器的主要功能

1. 位于低速的APB1總線上 (注意:高級定時器是在高速的APB2總線上);

2. 16位向上、向下、向上/向下自動裝載計數器(TIMx_CNT) ;

3. 16位編程(可以實時修改)預分頻器(TIMx_PSC), 計數器時鐘頻率的分頻系數為1~65536之間的任意數值 ;

4. 4個獨立通道(TIMx_CH1~4) ,這些通道可以用來作為: 輸入捕獲、輸出比較、PWM生成 (邊緣或中間對齊模式)、 單脈沖模式輸出 ;

5. 使用外部信號控制定時器和定時器互連的同步電路 ;

6. 如下事件發(fā)生時產生中斷/DMA :更新(計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發(fā)))、觸發(fā)事件(計數器啟動、停止、初始化或者由內部/外部觸發(fā)計數)、輸入捕獲、輸出比較; 支持針對定位的增量(正交)編碼器和霍爾傳感器電路 ; 觸發(fā)輸入作為外部時鐘或者按周期的電流管理 ;

7.STM32的通用定時器可以被用于:測量輸入信號的脈沖長度(輸入捕獲)或者產生輸出波形(輸出比較和PWM)等。(使用定時器預分頻器和RCC時鐘控制器預分頻器,脈沖長度和波形周期可以在幾個微秒到幾個毫秒間調整。)

8. 每個通用定時器都是完全獨立的,沒有互相共享的任何資源 。

(三)通用定時器的計數器模式

  1. 通用定時器可以向上計數、向下計數、向上向下雙向計數模式。
  2. 向上計數模式 :計數器從0計數到自動加載值(TIMx_ARR),然后重新從0開始計數并且產生一個計數器溢出事件。
  3. 向下計數模式 :計數器從自動裝入的值(TIMx_ARR)開始向下計數到0,然后從自動裝入的值重新開始,并產生一個計數器向下溢出事件。
  4. 中央對齊模式(向上/向下計數) :計數器從0開始計數到自動裝入的值-1,產生一個計數器溢出事件,然后向下計數到1并且產生一個計數器溢出事件;然后再從0開始重新計數。

(四)通用定時器的PWM

利用STM32通用定時器的比較輸出功能,可以很方便地輸出PWM信號。脈沖寬度調制(Pulse Width Modulation,PWM)是廣泛用于燈光亮度、電機調速的一種數字控制方法。

脈沖寬度與周期的比值稱為占空比 ,脈沖寬度越大,則占空比越大。占空比越大的信號對應的LED亮度也越高。

圖片

如圖(a)所示,首先將定時器設置為增加/減少計數模式,則主計數器由0開始加計數到自動重裝載值Np,然后減計數到0,如此循環(huán)往復。圖中的三角形表示計數值的變化曲線,三角形曲線的周期為T。

如果開啟PWM輸出模式,并將比較輸出值設為Nc,則在定時器的PWM輸出端會產生電平變化,當比較值Nc大于計數值n時,輸出高電平;當比較值Nc小于計數值n時,輸出低電平,如此循環(huán)往復可以產生一個周期為T的方波。

如圖(b)所示,增加比較輸出值Nc,按照以上規(guī)則會產生一個周期同樣為T的方波,只是此時脈沖寬度ΔT增加,也就是占空比增加。

(五)通用定時器結構框圖

通用定時器TIMx(TIM2~TIM5)的核心為可編程預分頻器驅動的16位自動重裝載計數器,主要由時鐘源、時鐘單元、捕獲/比較通道等組成。

圖片

1. 時鐘源的選擇

通用定時器的時鐘可由多種時鐘輸入源構成,除了內部時鐘源,其他三種時鐘源均通過TRGI(觸發(fā))輸入。通用定時器的計數器時鐘可由下列時鐘源提供:

(1) 內部時鐘(TIMx_CLK) 。

(2) 外部時鐘模式1:外部捕捉比較引腳(TIx) ,外部輸入引腳(TIx)包括外部比較/捕獲引腳TIIF_ED、TI1FP1和TI2FP2,計數器在選定引腳的上升沿或下降沿開始計數。

(3) 外部時鐘模式2:外部引腳輸入(TIMx_ETR) ,外部觸發(fā)輸入引腳(ETR),計數器在ETR引腳的上升沿或下降沿開始計數。

(4) 內部觸發(fā)輸入(ITRx,x=0, 1, 2, 3) ,一個定時器作為另一個定時器的預分頻器,如可以配置定時器TIM1作為定時器TIM2的預分頻器。

這里定時器的內部時鐘源并不是直接來自APB1或APB2,而是 來源于輸入為APB1或APB2的一個倍頻器 。當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率。當APB1的預分頻系數為其他數值(預分頻系數為2、4、8或16)時,這個倍頻器才能夠發(fā)揮作用,定時器的時鐘頻率等于APB1頻率的2倍。(例:當AHB為72MHz時,APB1的預分頻系數必須大于2,因為APB1的最大輸出頻率只能為36MHz。如果APB1的預分頻系數為2,則由于這個倍頻器2倍的作用,使得TIM2~TIM5仍然能夠得到72MHz的時鐘頻率。若APB1的輸出為72MHz,則直接取APB1的預分頻系數為1就可以保證TIM2~TIM5的時鐘頻率為72MHz,但是這樣就無法為其他外設提供低頻時鐘。當設置內部的倍頻器時,可以在保證其他外設能夠使用較低時鐘頻率的同時,使TIM2~TIM5仍能得到較高的時鐘頻率。)

外部時鐘源作為通用定時器的時鐘時,包括外部時鐘模式1和外部時鐘模式2兩種** 。當從模式控制寄存器TIMx_SMCR的SMS=1時,外部時鐘源模式1被選定,計數器可以在選定輸入引腳的每個上升沿或下降沿計數。

當從模式控制寄存器TIMx_SMCR的ECE=1時,外部時鐘源模式2被選定,計數器在ETR引腳的上升沿或下降沿開始計數。

2. 定時器的時基單元

STM32微控制器的定時器的時基單元,從時鐘源送來的時鐘信號,經過預分頻器的分頻,降低頻率后輸出信號CK_CNT,送入計數器計數。預分頻器的分頻取值可以是1~65536之間的任意數值,一個72MHz的輸入信號經過分頻后,最小可以產生接近100Hz的信號。

可編程通用定時器的 主要部分是一個16位計數器和與其相關的自動重裝載寄存器 。該計數器可以在時鐘控制單元的控制下,進行遞增計數、遞減計數或中央對齊計數(先遞增計數,達到自動重裝載寄存器的數值后再遞減計數)。通過對時鐘控制單元的控制,可以實現直接被清零或在計數值達到自動重裝載寄存器的數值后被清零,也可以直接被停止或在計數值達到自動重裝載寄存器的數值時被停止,還能夠實現暫停一段時間計數后在時鐘控制單元的控制下恢復計數等操作。

計數器計滿溢出后,自動重裝載寄存器TIMx_ARR將所保存的初值重新賦給計數器,以實現繼續(xù)計數。

3. 捕獲/比較通道

通用定時器上的每一個TIMx的捕獲/比較通道都有一個捕獲/比較寄存器(包含影子寄存器),包括捕獲的輸入部分(數字濾波、多路復用和預分頻器)和輸出部分(比較器和輸出控制)。當一個通道工作在捕獲模式時,該通道的輸出部分會自動停止工作;反之,當一個通道工作在比較模式時,該通道的輸入部分也會自動停止工作。

(1)捕獲通道。當一個通道工作于捕獲模式時,輸入信號會從引腳經輸入濾波、邊沿檢測和預分頻電路后,控制捕獲寄存器的操作。

(2)比較通道。當一個通道工作于比較模式時,程序將比較數值寫入比較寄存器,定時器會不停地將該寄存器的內容與計數器的內容進行比較,一旦比較條件成立,就會產生相應的輸出。

4. 定時時間的計算

Tout= ((arr+1)*(psc+1))/Tclk; Tclk :TIM3的輸入時鐘頻率(單位為MHz)。 Tout :TIM3溢出時間(單位為us)。

例:計時1s,輸入時鐘頻率為72MHz。

arr = 9999,psc = 7199。

Tout = ((arr+1)*(psc+1))/Tclk = ((9999+1) *(7199+1))/72=1M(us)=1(s)

1.jpg

(六)編寫定時器中斷

  1. 使能定時器時鐘 。調用函數:RCC_APB1PeriphClockCmd();
  2. 初始化定時器,配置ARR、PSC 。調用函數:TIM_TimeBaseInit();
  3. 開啟定時器中斷,配置NVIC 。調用函數:void TIM_ITConfig();NVIC_Init();
  4. 使能定時器 。調用函數:TIM_Cmd();
  5. 編寫中斷服務函數 。調用函數:TIMx_IRQHandler()。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7454

    瀏覽量

    150851
  • 看門狗
    +關注

    關注

    10

    文章

    558

    瀏覽量

    70707
  • 定時器
    +關注

    關注

    23

    文章

    3231

    瀏覽量

    114326
  • 電源供電
    +關注

    關注

    0

    文章

    157

    瀏覽量

    22075
  • STM32F103
    +關注

    關注

    33

    文章

    475

    瀏覽量

    63412
收藏 人收藏

    評論

    相關推薦

    電機控制基礎知識1—定時器基礎知識與PWM輸出原理

    轉速等。 本篇先介紹 定時器基礎知識 ,然后對照這些知識介紹一下 定時器輸出PWM的基本原理 ,以及 編程實現與代碼分析 。 首先來看一下定時器
    的頭像 發(fā)表于 06-17 00:11 ?1.2w次閱讀
    電機控制<b class='flag-5'>基礎知識</b>1—<b class='flag-5'>定時器</b><b class='flag-5'>基礎知識</b>與PWM輸出原理

    STM32F407 基本定時器使用

    介紹STM32F407基本定時器的配置方法,分別介紹輪詢方式、中斷方式使用定時器完成定時。
    的頭像 發(fā)表于 07-06 14:32 ?3097次閱讀
    <b class='flag-5'>STM32F</b>407 基本<b class='flag-5'>定時器</b>使用

    STM32F03自帶的ADC功能

    前言學習了之后才知道原來STM32F03自帶的ADC功能還是挺強大的,10位ADC,一次可以掃描16個通道。還可以使用DMA來讀取轉換結果,最重要的是不用加ADC外設了。ADC知識點多的就不
    發(fā)表于 07-23 07:01

    定時器基礎知識

    定時器基礎知識1.STM32定時器簡介(1)STM32家族的
    發(fā)表于 08-09 07:30

    STM32定時器簡介

    目錄1:STM32定時器2:通用定時器簡介3:計數模式4:通用定時器工作過程5:
    發(fā)表于 08-18 06:48

    Systick定時器基礎知識講解

    Systick定時器基礎知識講解Systick相關寄存庫函數講解delay延時函數講解(Systick應用)(借鑒正點原子網課)(一)Systick定時器,是一個簡單的
    發(fā)表于 08-19 07:18

    STM32H7的TIM定時器基礎知識和HAL庫

    第32章 STM32H7的TIM定時器基礎知識和HAL庫API本章節(jié)為大家講解TIM1 – TIM17(STM32H7沒有TIM9,TIM10和TIM11)共計14個
    發(fā)表于 08-19 06:53

    淺析STM32f03的系統時鐘和配置時鐘

    怎樣對STM32f03的時鐘樹進行配置呢?怎樣去設置STM32f03系統時鐘的庫函數呢?
    發(fā)表于 11-08 07:39

    定時器基礎知識與PWM輸出原理是什么

    轉速等。本篇先介紹定時器基礎知識,然后對照這些知識介紹一下定時器輸出PWM的基本原理,以及編程實現與代碼分析。首先來看一下定時器的基礎介紹
    發(fā)表于 01-25 08:16

    淺談定時器基礎知識與PWM輸出原理

    轉速等。 本篇先介紹定時器基礎知識,然后對照這些知識介紹一下定時器輸出PWM的基本原理,以及編程實現與代碼分析。 首先來看一下定時器的基礎
    的頭像 發(fā)表于 04-05 10:35 ?1.4w次閱讀
    淺談<b class='flag-5'>定時器</b><b class='flag-5'>基礎知識</b>與PWM輸出原理

    STM32F03學習筆記之ADC配置(含DMA配置)

    前言學習了之后才知道原來STM32F03自帶的ADC功能還是挺強大的,10位ADC,一次可以掃描16個通道。還可以使用DMA來讀取轉換結果,最重要的是不用加ADC外設了。ADC知識點多的就不
    發(fā)表于 11-30 11:21 ?13次下載
    <b class='flag-5'>STM32F03</b>學習筆記之ADC配置(含DMA配置)

    電機控制基礎——定時器基礎知識與PWM輸出原理

    轉速等。本篇先介紹定時器基礎知識,然后對照這些知識介紹一下定時器輸出PWM的基本原理,以及編程實現與代碼分析。首先來看一下定時器的基礎介紹
    發(fā)表于 11-30 14:21 ?38次下載
    電機控制基礎——<b class='flag-5'>定時器</b><b class='flag-5'>基礎知識</b>與PWM輸出原理

    STM32---定時器知多少

    14,15,16章節(jié),里面對定時器知識有詳細的介紹。STM32F1系列的開發(fā)板一共有8個定時器,按照功能的不同可以分為:高級定時器(TIM
    發(fā)表于 11-30 14:36 ?19次下載
    <b class='flag-5'>STM32</b>---<b class='flag-5'>定時器</b>知多少

    STM32F03寄存方式點亮LED流水燈

    STM32F03寄存方式點亮LED流水燈文章目錄STM32F03寄存方式點亮LED流水燈一、題目內容二、STM32F03系列芯片的地址映
    發(fā)表于 01-13 14:47 ?9次下載
    <b class='flag-5'>STM32F03</b>寄存<b class='flag-5'>器</b>方式點亮LED流水燈

    STM32F407定時器編碼模式簡介

    STM32F407定時器編碼模式
    發(fā)表于 03-31 17:14 ?8528次閱讀
    <b class='flag-5'>STM32F</b>407<b class='flag-5'>定時器</b>編碼<b class='flag-5'>器</b>模式<b class='flag-5'>簡介</b>