RM新时代网站-首页

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32定時(shí)器所支持的三種計(jì)數(shù)模式及計(jì)數(shù)過(guò)程

茶話MCU ? 來(lái)源:未知 ? 作者:李倩 ? 2018-11-19 19:18 ? 次閱讀

STM32常規(guī)定時(shí)器主要包括基本定時(shí)器、通用定時(shí)器和高級(jí)定時(shí)器。不論哪一類(lèi)定時(shí)器,都有個(gè)共同的計(jì)數(shù)定時(shí)單元,我們把它稱(chēng)之為時(shí)基單元。

該單元主要由三部分組成:

分頻模塊、計(jì)數(shù)模塊、自動(dòng)重裝載模塊?。

分頻模塊用來(lái)對(duì)外來(lái)的計(jì)數(shù)時(shí)鐘進(jìn)行分頻,這里有個(gè)分頻計(jì)數(shù)器,通過(guò)它來(lái)實(shí)現(xiàn)對(duì)時(shí)鐘的分頻功能。與之對(duì)應(yīng)的有個(gè)分頻器寄存器TIMx_PSC,用來(lái)配置和存放分頻比、分頻系數(shù)。

計(jì)數(shù)模塊用來(lái)對(duì)來(lái)自分頻器輸出的計(jì)數(shù)脈沖進(jìn)行計(jì)數(shù)。相應(yīng)的這里有個(gè)寄存器—計(jì)數(shù)器寄存器TIMx_CNT,為了把該計(jì)數(shù)器跟別的計(jì)數(shù)器區(qū)別開(kāi)來(lái),不妨稱(chēng)它為核心計(jì)數(shù)器。

自動(dòng)重裝載模塊用來(lái)配合計(jì)數(shù)器溢出,當(dāng)計(jì)數(shù)器溢出時(shí)為之賦予初始計(jì)數(shù)值的功能單元。與之相應(yīng)的有個(gè)自動(dòng)重裝載寄存器TIMx_ARR.當(dāng)自動(dòng)重裝載寄存器TIMx_ARR修改生效后就可以自動(dòng)地作為計(jì)數(shù)器的計(jì)數(shù)邊界或重裝值。

關(guān)于自動(dòng)重裝及自動(dòng)重裝載寄存器TIMx_ARR是個(gè)相對(duì)比較難理解的地方,尤其關(guān)于ARR寄存器數(shù)據(jù)的含義。我們?cè)诳碨TM32參考手冊(cè)時(shí),很難一下子理解得很到位,往往需要結(jié)合上下文內(nèi)容反復(fù)閱讀后去領(lǐng)會(huì)。關(guān)于計(jì)數(shù)器的溢出與重裝,在手冊(cè)里只有些零散且并不算清晰的介紹,這里盡力跟大家做些交流,以供參考。

當(dāng)計(jì)數(shù)器溢出時(shí),自動(dòng)重裝載器為計(jì)數(shù)器重裝計(jì)數(shù)初始值。自動(dòng)重裝寄存器【ARR】為計(jì)數(shù)器設(shè)置計(jì)數(shù)邊界或初始值,決定計(jì)數(shù)脈沖的多少或計(jì)時(shí)周期長(zhǎng)短。比如:計(jì)數(shù)器向上計(jì)數(shù)時(shí),計(jì)到多少發(fā)生溢出;向下計(jì)數(shù)時(shí)從多少開(kāi)始往下計(jì)數(shù)。平常我們泛泛地說(shuō)ARR寄存器為計(jì)數(shù)器提供計(jì)數(shù)邊界或重裝值,但它的具體含義及使用需要結(jié)合計(jì)數(shù)器的計(jì)數(shù)模式才能確定。

那一起看看STM32定時(shí)器所支持的三種計(jì)數(shù)模式及計(jì)數(shù)過(guò)程。

【文中圖片可以點(diǎn)擊放大觀看】

從上面三種計(jì)數(shù)模式下的計(jì)數(shù)動(dòng)作來(lái)看,不同模式下計(jì)數(shù)器的溢出點(diǎn)并不一樣,溢出后重裝值也不一樣。顯然,ARR寄存器里的數(shù)據(jù)扮演的角色也因不同的計(jì)數(shù)模式而有所不同。我這里特地就三種計(jì)數(shù)模式下的溢出與重裝匯總成一個(gè)表格,以便觀察和比較。不難看出,重裝值并不一定等于ARR,有時(shí)重裝值就是0.

根據(jù)上面的介紹和分析,我們要弄清楚幾點(diǎn):

1、對(duì)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)以及溢出是計(jì)數(shù)器的事;

2、當(dāng)計(jì)數(shù)器發(fā)生溢出時(shí)對(duì)計(jì)數(shù)器重裝初始值是自動(dòng)重裝載器的事;

3、ARR寄存器里數(shù)據(jù)的含義會(huì)因計(jì)數(shù)模式的不同而有所不同;

我們弄個(gè)實(shí)例來(lái)看看,以加深對(duì)這個(gè)溢出與重裝的理解。

我們來(lái)看一個(gè)通過(guò)高級(jí)定時(shí)器使用比較輸出功能輸出指定個(gè)數(shù)脈沖的實(shí)例。假設(shè)使用PWM輸出的單脈沖模式,借助高級(jí)定時(shí)器的RCR【重復(fù)計(jì)數(shù)器寄存器】來(lái)輸出指定個(gè)數(shù)的PWM脈沖。

單脈沖模式:計(jì)數(shù)器啟動(dòng)后,對(duì)于高級(jí)定時(shí)器,發(fā)生第RCR+1次溢出時(shí)觸發(fā)更新事件,同時(shí)計(jì)數(shù)器停止計(jì)數(shù)。對(duì)于通用定時(shí)器,沒(méi)有RCR寄存器,即每次溢出都可以產(chǎn)生更新事件,然后停止計(jì)數(shù)。

首先,我們需選擇合適的計(jì)數(shù)模式與PWM輸出模式來(lái)完成該任務(wù)。

條件1:向上計(jì)數(shù)模式 + PWM1模式;RCR=2; 極性選擇高有效。

基于這個(gè)條件,當(dāng)CCR大于計(jì)數(shù)器CNT時(shí),OCx端輸出高電平,反之輸出低電平。

RCR=2,意味著計(jì)數(shù)器在發(fā)生第3次溢出時(shí)產(chǎn)生更新事件。

經(jīng)驗(yàn)證測(cè)試,基于上面條件的輸出波形是下面的樣子。

【圖一、向上計(jì)數(shù)模式+ PWM1模式RCR=2;極性選擇高有效】

一眼就可以看出,輸出波形后面多了高電平尾巴,如果是自己期望的倒還好。如果希望最后電平停在低電平,顯然就不合適了。

我們先不管合不合適,看看為什么會(huì)這樣。最后發(fā)生溢出時(shí)計(jì)數(shù)器的值不等于ARR嗎?結(jié)合上面圖形,不難看出ARR的值顯然比CCR要大得多,即最后時(shí)刻計(jì)數(shù)器的值比CCR要大,那根據(jù)上面PWM1模式和極性選擇條件,不是該輸出低電平嗎?怎么會(huì)輸出高電平呢?奇怪!哪里不對(duì)勁呢?

那我們換個(gè)PWM輸出模式,保持其它條件不變,看看使用PWM2模式結(jié)果如何?

條件2:向上計(jì)數(shù)模式 + PWM2模式;RCR=2; 極性選擇高有效。

基于上面條件,當(dāng)CCR大于計(jì)數(shù)器CNT時(shí),OCx端輸出低電平,反之輸出高電平?【即跟PWM1模式時(shí)的輸出是相反的】。

RCR=2,同樣意味著計(jì)數(shù)器在發(fā)生第3次溢出時(shí)產(chǎn)生更新事件。

經(jīng)驗(yàn)證測(cè)試,基于上述條件輸出波形變成了下面的樣子。

【圖二、向上計(jì)數(shù)模式+ PWM2模式RCR=2;極性選擇高有效】

3個(gè)脈沖輸出倒是漂亮。細(xì)心的人是否還是發(fā)現(xiàn)了最后結(jié)尾那個(gè)地方有點(diǎn)不對(duì)勁呢?第三次發(fā)生溢出【CNT==ARR】產(chǎn)生更新事件后,計(jì)數(shù)器停止計(jì)數(shù)了,如果此時(shí)計(jì)數(shù)器的值等于ARR的值,根據(jù)剛才PWM2模式和極性選擇的條件,那輸出應(yīng)該保持為高電平才合理怎么這又變成低了呢?

那問(wèn)題出在哪里呢?似乎哪一副圖都存在著原理上說(shuō)不過(guò)去的地方。結(jié)合前面的溢出與重裝的的介紹與分析,或許有人看出端倪了。

其實(shí),這兩副圖中,最后發(fā)生溢出的時(shí)刻都是在CNT等于ARR的時(shí)候,溢出的同時(shí)觸發(fā)了更新事件。加上定時(shí)器工作在單脈沖PWM輸出模式,計(jì)數(shù)器被停止計(jì)數(shù)。但計(jì)數(shù)器停止計(jì)數(shù),并不妨礙計(jì)數(shù)器溢出時(shí)自動(dòng)重裝載器對(duì)其做初始值的重裝。那么這個(gè)重裝值是多少呢?結(jié)合這里的計(jì)數(shù)模式,這個(gè)重裝值正好是0,即計(jì)數(shù)器的值變?yōu)?了,并停在這個(gè)位置。既然溢出后計(jì)數(shù)器值變?yōu)?了,對(duì)于PWM1模式+高有效極性選擇的話,相應(yīng)的比較輸出結(jié)果就是高電平;對(duì)于PWM2模式+高有效極性選擇的話,相應(yīng)的比較輸出結(jié)果就是低電平。經(jīng)這樣分析所得結(jié)論,正好跟我們的實(shí)測(cè)結(jié)果一致。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120229
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355722
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3246

    瀏覽量

    114715

原文標(biāo)題:STM32定時(shí)器的溢出與重裝

文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32定時(shí)器的分頻模塊、計(jì)數(shù)模塊、自動(dòng)重裝載模塊?

    生溢出;向下計(jì)數(shù)時(shí)從多少開(kāi)始往下計(jì)數(shù)。平常我們泛泛地說(shuō)ARR寄存計(jì)數(shù)器提供計(jì)數(shù)邊界或重裝值,但它的具體含義及使用需要結(jié)合
    發(fā)表于 05-27 08:00

    STM32的通用定時(shí)器和高級(jí)定時(shí)器

    STM32的通用定時(shí)器和高級(jí)定時(shí)器除了支持單向的向上或向下計(jì)數(shù)模式外,還支持中心對(duì)齊
    發(fā)表于 08-11 08:51

    三種STM32定時(shí)器區(qū)別通用定時(shí)器功能特點(diǎn)描述

    三種STM32定時(shí)器區(qū)別通用定時(shí)器功能特點(diǎn)描述??1、STM3 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定時(shí)器功能特
    發(fā)表于 08-13 08:47

    三種STM32定時(shí)器區(qū)別

    STM32F10x系列總共最多有8個(gè)定時(shí)器三種STM32定時(shí)器區(qū)別:通用定時(shí)器功能特點(diǎn)描述:①
    發(fā)表于 08-18 06:03

    STM32F10ZET6內(nèi)部三種定時(shí)器區(qū)別

    STM32F10ZET6內(nèi)部有三種定時(shí)器,分別是:高級(jí)定時(shí)器,通用定時(shí)器,基本定時(shí)器。他們的區(qū)別
    發(fā)表于 08-18 08:28

    STM32F1xx系列三種定時(shí)器的區(qū)別

    目錄三種定時(shí)器的區(qū)別通用定時(shí)器的特點(diǎn)描述計(jì)數(shù)器模式通用定時(shí)器工作
    發(fā)表于 08-18 07:09

    HT48 MCU定時(shí)器/計(jì)數(shù)器的應(yīng)用

    HT48 MCU定時(shí)器/計(jì)數(shù)器的應(yīng)用 本文以 HT48R10A-1 為例,分別介紹HT48RXA-1 系列中定時(shí)器/計(jì)數(shù)器的內(nèi)部計(jì)時(shí)模式、
    發(fā)表于 03-25 09:53 ?24次下載

    HT48 MCU 定時(shí)器/計(jì)數(shù)器的使用

    HT48 MCU 定時(shí)器/計(jì)數(shù)器的使用簡(jiǎn)介:本文以 HT48R10A-1 為例,分別介紹HT48RXA-1 系列中定時(shí)器/計(jì)數(shù)器的內(nèi)部計(jì)時(shí)模式
    發(fā)表于 03-26 08:36 ?18次下載

    STM32定時(shí)器基本計(jì)數(shù)原理解析

    STM32的TIM定時(shí)器分為類(lèi):基本定時(shí)器、通用定時(shí)器和高級(jí)定時(shí)器。從分類(lèi)來(lái)看就知道
    發(fā)表于 12-27 16:20 ?1.8w次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>定時(shí)器</b>基本<b class='flag-5'>計(jì)數(shù)</b>原理解析

    STM32定時(shí)器三種中心對(duì)齊計(jì)數(shù)模式簡(jiǎn)介

    STM32的通用定時(shí)器和高級(jí)定時(shí)器除了支持單向的向上或向下計(jì)數(shù)模式外,還支持中心對(duì)齊
    發(fā)表于 12-08 20:51 ?31次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時(shí)器</b><b class='flag-5'>三種</b>中心對(duì)齊<b class='flag-5'>計(jì)數(shù)模式</b>簡(jiǎn)介

    STM32F103-定時(shí)器

    )基本定時(shí)器只具有16位計(jì)數(shù)器功能,并且只能向上計(jì)數(shù)。通用定時(shí)器計(jì)數(shù)器輸入捕獲輸出比較生成pwm計(jì)數(shù)器
    發(fā)表于 12-31 19:14 ?14次下載
    <b class='flag-5'>STM32</b>F103-<b class='flag-5'>定時(shí)器</b>

    應(yīng)用筆記 | 高精度定時(shí)器中single-shot計(jì)數(shù)模式不工作

    關(guān)鍵字:高精度定時(shí)器,Single-shot 計(jì)數(shù)模式 目錄預(yù)覽 1 問(wèn)題提出? 2 問(wèn)題分析 3 解決辦法 4 小結(jié) 1. 問(wèn)題提出 客戶(hù)使用STM32G474的高精度定時(shí)器,基于C
    的頭像 發(fā)表于 08-09 17:45 ?742次閱讀
    應(yīng)用筆記 | 高精度<b class='flag-5'>定時(shí)器</b>中single-shot<b class='flag-5'>計(jì)數(shù)模式</b>不工作

    高精度定時(shí)器中single-shot計(jì)數(shù)模式不工作

    高精度定時(shí)器中single-shot計(jì)數(shù)模式不工作
    的頭像 發(fā)表于 10-25 18:08 ?555次閱讀
    高精度<b class='flag-5'>定時(shí)器</b>中single-shot<b class='flag-5'>計(jì)數(shù)模式</b>不工作

    簡(jiǎn)述STM32定時(shí)器計(jì)數(shù)器模式

    STM32的向上計(jì)數(shù)模式是指定時(shí)器計(jì)數(shù)器從0開(kāi)始計(jì)數(shù),直到達(dá)到自動(dòng)加載值(TIMx_ARR),然后重新從0開(kāi)始
    的頭像 發(fā)表于 12-13 10:09 ?5045次閱讀

    STM32的向上計(jì)數(shù)模式如何產(chǎn)生計(jì)數(shù)器溢出事件?

    STM32的向上計(jì)數(shù)模式的自動(dòng)加載值是指定時(shí)器計(jì)數(shù)器的最大計(jì)數(shù)值。當(dāng)計(jì)數(shù)器達(dá)到這個(gè)值時(shí),它會(huì)回滾
    的頭像 發(fā)表于 12-13 10:22 ?1430次閱讀
    RM新时代网站-首页