一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

單片機(jī)定時(shí)器的用法

jf_qE49KoVBr8 ? 來(lái)源:武漢芯源半導(dǎo)體 ? 2024-01-04 10:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本章以CW32通用定時(shí)器為例介紹單片機(jī)定時(shí)器的用法。

定時(shí)器是單片機(jī)中一個(gè)非常傳統(tǒng)且重要的外設(shè),定時(shí)器的本質(zhì)其實(shí)就是一個(gè)計(jì)數(shù)器,只不過(guò)被計(jì)數(shù)的對(duì)象是定時(shí)器的時(shí)鐘源。定時(shí)器要正常工作,需要這幾個(gè)要點(diǎn)步驟:有時(shí)鐘源輸入、計(jì)數(shù)器工作、有一個(gè)可以比較的值(自動(dòng)重裝載值)。其工作流程是這樣的:計(jì)數(shù)器會(huì)隨著時(shí)鐘源對(duì)時(shí)鐘源提供的脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)值不斷上漲(或下降),如果計(jì)數(shù)值和自動(dòng)重裝載值一樣,那么計(jì)數(shù)器的值就會(huì)被硬件清零重新計(jì)數(shù),這個(gè)清零重新計(jì)數(shù)被稱為定時(shí)器計(jì)數(shù)溢出,這個(gè)事情會(huì)觸發(fā)一個(gè)中斷,被叫做定時(shí)器溢出中斷,也就是說(shuō),定時(shí)器依靠對(duì)穩(wěn)定的時(shí)鐘源定次數(shù)計(jì)數(shù)來(lái)實(shí)現(xiàn)定時(shí),并且每一個(gè)定時(shí)周期完成都會(huì)產(chǎn)生溢出中斷。

上面講述的就是任何一個(gè)定時(shí)器都會(huì)具備的功能,只要是個(gè)定時(shí)器就會(huì)有,程序上為了方便,關(guān)于上述功能的配置項(xiàng)都被以”base”命名,比如這樣:

376c7de4-aaaa-11ee-8b88-92fbcf53809c.png

377e70bc-aaaa-11ee-8b88-92fbcf53809c.png

37931698-aaaa-11ee-8b88-92fbcf53809c.png

看圖中的結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體的成員同樣對(duì)應(yīng)了定時(shí)器相關(guān)的寄存器,由于定時(shí)器本質(zhì)是一個(gè)計(jì)數(shù)器,所以根據(jù)時(shí)鐘源的選擇,定時(shí)器會(huì)有不同的工作模式,如外部計(jì)數(shù)模式、編碼器模式等。這里選擇定時(shí)器模式(就是開頭介紹的那種工作過(guò)程),之后定時(shí)器會(huì)自動(dòng)選擇單片機(jī)自己工作使用的時(shí)鐘作為時(shí)鐘源,連續(xù)計(jì)數(shù)模式下,定時(shí)器會(huì)自動(dòng)重復(fù)執(zhí)行上述溢出中斷的過(guò)程,預(yù)分頻系數(shù)根據(jù)用戶需要進(jìn)行配置,它和下面的重裝載值共同決定定時(shí)器的溢出周期。

以圖中的配置為例,該定時(shí)器的時(shí)鐘源是48MHz,現(xiàn)在需要一個(gè)50Hz(也就是周期為20ms)的定時(shí)器,該定時(shí)器會(huì)每20ms觸發(fā)一次定時(shí)器中斷。在不進(jìn)行干涉的情況下,定時(shí)器每秒會(huì)計(jì)數(shù)48M次,預(yù)分頻系數(shù)設(shè)置成32之后,定時(shí)器每秒計(jì)數(shù)150萬(wàn)次,將重裝載值設(shè)置為30000,定時(shí)器在每計(jì)數(shù)30000次之后觸發(fā)一次中斷,1秒觸發(fā)50次中斷,正好是需要的50Hz頻率。但是填入的時(shí)候不能直接填入30000,因?yàn)?0000是人類從1開始計(jì)算第一個(gè)數(shù)字得出的結(jié)果,計(jì)算機(jī)的第一個(gè)數(shù)字是0,因此需要在最后減1。圖中的代碼直接列出了上述文字表達(dá)的公式,其中的50就是頻率。

隨后設(shè)置好中斷,完成必要的初始化,定時(shí)器的基本功能就可以使用了,中斷服務(wù)函數(shù)可以在函數(shù)列表中找到。

好的,你已經(jīng)掌握了所有單片機(jī)定時(shí)器的基本用法,不過(guò)細(xì)心的小伙伴肯定想過(guò):為什么CW32的定時(shí)器叫ATIM、GTIM和BTIM呢?TIM就是timer,也就是定時(shí)器,A是advanced的縮寫,ATIM就是高級(jí)定時(shí)器,GTIM是通用定時(shí)器,BTIM自然是基本定時(shí)器。這是根據(jù)功能對(duì)定時(shí)器資源進(jìn)行劃分的,這么劃分的好處是不需要查手冊(cè)就能通過(guò)代碼直接看出來(lái)某個(gè)定時(shí)器具備什么功能,基本定時(shí)器只具備上述基本功能,通用定時(shí)器額外擁有捕獲/比較功能,高級(jí)定時(shí)器包含通用定時(shí)器所有的功能,而且還有更多其他功能。理論上來(lái)說(shuō)這些附帶的功能都可以通過(guò)代碼來(lái)實(shí)現(xiàn),但由于很多工業(yè)場(chǎng)景需要用到,所以做到硬件層面會(huì)更加穩(wěn)定,也更方便。

本章使用的是通用定時(shí)器,下面介紹高級(jí)定時(shí)器的捕獲/比較功能,因?yàn)檫@個(gè)功能很常用。

首先需要著重聲明的一點(diǎn)是,捕獲比較功能大概率擁有多個(gè)通道,但是定時(shí)器,也就是上述的基礎(chǔ)功能只有一個(gè),所以即使使用很多個(gè)捕獲比較通道,其所屬定時(shí)器的定時(shí)周期也是相同的。

下面就來(lái)看看通用定時(shí)器的結(jié)構(gòu)框圖,初看這個(gè)圖可能會(huì)不知所措,我們可以先進(jìn)行簡(jiǎn)單的劃分,框圖上半部分的右側(cè)有一個(gè)16位計(jì)數(shù)器,計(jì)數(shù)器可以從左側(cè)選擇輸入的時(shí)鐘源,可以對(duì)輸入進(jìn)行分頻??驁D下半部分展示了定時(shí)器的4個(gè)捕獲比較通道channel1~channel4,通道可以用來(lái)輸出也可以用來(lái)輸入,但同一時(shí)間只能使用輸入|輸出中的一個(gè)功能。筆者剛學(xué)習(xí)單片機(jī)的時(shí)候,不知道通道是什么,總是稀里糊涂的,通道就是讓信號(hào)走的路,放到這里就是說(shuō),這個(gè)定時(shí)器擁有4個(gè)可以用來(lái)輸出|輸入的電信號(hào)道路。那這個(gè)通道輸出的是什么東西呢?

3797e092-aaaa-11ee-8b88-92fbcf53809c.png

我們都知道,對(duì)電平進(jìn)行周期反轉(zhuǎn)就可以制造方波,而定時(shí)器基本功能就可以實(shí)現(xiàn)這個(gè)效果,只需要在中斷中反轉(zhuǎn)IO電平即可。但是這樣很不方便,比如我想要在不調(diào)整周期的情況下去控制方波的占空比,這種原始的辦法就會(huì)略顯麻煩,需要在中斷內(nèi)修改定時(shí)器的設(shè)置來(lái)實(shí)現(xiàn)。為了避免這種麻煩,出現(xiàn)了一種帶輸出比較功能的定時(shí)器。理念也很簡(jiǎn)單,定時(shí)器自己有一個(gè)在有限區(qū)間內(nèi)周期性增長(zhǎng)歸零的計(jì)數(shù)器,那我直接設(shè)置一個(gè)新的門限值:當(dāng)這個(gè)自增的計(jì)數(shù)值小于門限時(shí),輸出高電平;計(jì)數(shù)值大于門限時(shí),輸出低電平。這就是定時(shí)器的輸出比較功能,對(duì)應(yīng)上圖下半部分右側(cè)的輸出功能。這種方式可以便捷快速地輸出一個(gè)可輕松修改占空比的方波,而這種對(duì)信號(hào)的處理方式,也叫做脈寬調(diào)制(Pulse-widthmodulation),簡(jiǎn)稱PWM,用這種方式輸出的方波也叫做PWM波。

現(xiàn)在來(lái)看使用PWM功能需要進(jìn)行哪些操作。先思考,除去基本的定時(shí)器配置之外,PWM需要用到捕獲比較通道,那必然會(huì)有對(duì)比較捕獲功能相關(guān)寄存器的配置,它需要輸出一個(gè)波,那必定會(huì)有引腳相關(guān)的初始化。

下面看代碼:首先當(dāng)然是對(duì)IO的初始化,相信經(jīng)過(guò)對(duì)前幾章的閱讀,讀者必定是能輕松配置GPIO了,這里著重介紹對(duì)PWM輸出功能的配置。第一步當(dāng)然是找到輸出比較功能的函數(shù),輸出比較的英文是output compare,簡(jiǎn)寫是OC,所以直接找到函數(shù)“通用定時(shí)器_輸出比較初始化”。這個(gè)函數(shù)有3個(gè)參數(shù),按順序分別表示要初始化的定時(shí)器是哪個(gè)、要初始化的通道是哪個(gè)、以及這個(gè)通道的輸出模式。輸出模式就是設(shè)定:當(dāng)計(jì)數(shù)值大于|小于門限值的時(shí)候,是該輸出高電平還是低電平。這里設(shè)定的是計(jì)數(shù)值小于門限時(shí)輸出高電平。第二步就是設(shè)置這個(gè)關(guān)鍵的門限值,我們可以直接找到“通用定時(shí)器_設(shè)置比較1”來(lái)設(shè)置門限值,這里我把門限值設(shè)定為重裝載值的一半,最后的效果就是輸出一個(gè)占空比50%的方波。

37b09f9c-aaaa-11ee-8b88-92fbcf53809c.png

37bb0ae0-aaaa-11ee-8b88-92fbcf53809c.png

對(duì)占空比的修改不一定需要用到這個(gè)設(shè)置占空比的函數(shù),我們可以直接修改寄存器來(lái)實(shí)現(xiàn)。單片機(jī)中,存儲(chǔ)這個(gè)門限值的是一個(gè)叫做CCR的寄存器,所以為什么叫CCR?沒(méi)錯(cuò),他原名叫Capture Comparison Register,所以就簡(jiǎn)寫為CCR。定時(shí)器的每一個(gè)通道都有一個(gè)自己的捕獲比較寄存器,所以CCR一共有四個(gè),故而上圖那個(gè)設(shè)置門限值的函數(shù)也有4個(gè),但是由于整個(gè)寄存器都只用來(lái)裝這一個(gè)值,所以我們修改的時(shí)候可以直接操作寄存器修改,就像這樣CW_GTIM1->CCR1=0,我們也可以直接對(duì)這個(gè)賦值號(hào)左側(cè)的部分進(jìn)行自增操作或是別的什么操作都可以,但是寫入操作僅限于作為輸出模式時(shí)使用。

下面就是緊張刺激的驗(yàn)證環(huán)節(jié)了,筆者手上沒(méi)有可以接的用來(lái)發(fā)光的燈泡,所以直接用萬(wàn)用表測(cè)量輸出引腳的電壓來(lái)驗(yàn)證PWM功能,萬(wàn)用表在測(cè)量方波時(shí),會(huì)顯示該方波的平均值,所以如果PWM正常,萬(wàn)用表的直流檔會(huì)顯示1.65V左右的電壓,交流檔會(huì)顯示3.3V的電壓,這里我為了使現(xiàn)象更明顯,在中斷中對(duì)PWM波的占空比進(jìn)行周期性修改。

37cd6212-aaaa-11ee-8b88-92fbcf53809c.png

經(jīng)過(guò)測(cè)量,占空比50%時(shí),PA6輸出電壓為1.62V,算上誤差這個(gè)在預(yù)期結(jié)果內(nèi)。而加入中斷的代碼后,萬(wàn)用表示數(shù)會(huì)周期性跳變,符合預(yù)期結(jié)果,可以認(rèn)定該配置下,PWM功能正常工作。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650504
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2291

    瀏覽量

    96420
  • 輸出電壓
    +關(guān)注

    關(guān)注

    2

    文章

    1709

    瀏覽量

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

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118949
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    255

    瀏覽量

    1251

原文標(biāo)題:【CW32學(xué)習(xí)筆記】通用定時(shí)器——輸出比較

文章出處:【微信號(hào):武漢芯源半導(dǎo)體,微信公眾號(hào):武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【有那么點(diǎn)詳細(xì)的CW32學(xué)習(xí)筆記】通用定時(shí)器——輸出比較

    本章以CW32通用定時(shí)器為例介紹單片機(jī)定時(shí)器用法定時(shí)器單片機(jī)中一個(gè)非常傳統(tǒng)且重要的外設(shè),
    的頭像 發(fā)表于 12-28 11:24 ?1817次閱讀
    【有那么點(diǎn)詳細(xì)的CW32學(xué)習(xí)筆記】通用<b class='flag-5'>定時(shí)器</b>——輸出比較

    定時(shí)器的基本用法是什么

    定時(shí)器單片機(jī)里非常重要的一個(gè)模塊,必須熟練掌握,本篇按這樣的順序展開:一、簡(jiǎn)單介紹定時(shí)器二、定時(shí)器基本用法三、
    發(fā)表于 07-16 09:01

    基于51單片機(jī)定時(shí)器2的操作與實(shí)現(xiàn)

    基于51單片機(jī)定時(shí)器2的操作與實(shí)現(xiàn),51單片機(jī)定時(shí)器2的使用!
    發(fā)表于 02-22 17:53 ?14次下載

    52單片機(jī)有幾個(gè)定時(shí)器?52單片機(jī)定時(shí)器1和52單片機(jī)定時(shí)器2程序?qū)Ρ?/a>

    52單片機(jī)有幾個(gè)定時(shí)器?STC89C52RC其實(shí)是有三個(gè)定時(shí)器單片機(jī),STC89C52RC共有3個(gè)定時(shí)器,分別是T0、T1、T2。而51
    發(fā)表于 11-10 14:30 ?3.6w次閱讀

    【C51】單片機(jī)定時(shí)器介紹

    【C51】單片機(jī)定時(shí)器介紹 標(biāo)準(zhǔn)51架構(gòu)的單片機(jī)有2個(gè)定時(shí)器 :T0 和 T1,他們2個(gè)的用法幾乎一樣。下面主要講T0
    發(fā)表于 11-24 01:32 ?3947次閱讀
    【C51】<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>介紹

    51單片機(jī)定時(shí)器工作原理

    51單片機(jī)定時(shí)器工作原理及用法
    的頭像 發(fā)表于 03-14 13:51 ?9.7w次閱讀

    51單片機(jī)定時(shí)器T0的中斷使用法詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)定時(shí)器T0的中斷使用法詳細(xì)說(shuō)明程序免費(fèi)下載。
    發(fā)表于 08-22 17:30 ?0次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>T0的中斷使<b class='flag-5'>用法</b>詳細(xì)說(shuō)明

    基于單片機(jī)定時(shí)器的設(shè)計(jì)方法

    單片機(jī)實(shí)現(xiàn)一個(gè)定時(shí)器只要對(duì)單片機(jī)里的特殊寄存進(jìn)行設(shè)置就可以實(shí)現(xiàn)了,下面我與朋友們說(shuō)說(shuō)這個(gè)0到9.9秒定時(shí)器的設(shè)計(jì)方法。
    的頭像 發(fā)表于 11-02 16:58 ?1.1w次閱讀
    基于<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>定時(shí)器</b>的設(shè)計(jì)方法

    51單片機(jī)——定時(shí)器的原理和使用

    定時(shí)器的原理1.cpu時(shí)序的有關(guān)知識(shí)震蕩周期:為單片機(jī)提供定時(shí)信號(hào)的震蕩源的周期(由外部的晶振)狀態(tài)周期:2個(gè)震蕩周期,用s表示機(jī)械周期 6個(gè)狀態(tài)周期,12個(gè)震蕩周期 (12MHz的晶振1us)指令
    發(fā)表于 11-10 18:50 ?72次下載
    51<b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>定時(shí)器</b>的原理和使用

    51單片機(jī)——定時(shí)器

    51單片機(jī)——定時(shí)器為什么使用定時(shí)器定時(shí)器原理?定時(shí)器設(shè)置中斷配置源代碼為什么使用定時(shí)器?之前
    發(fā)表于 11-11 16:36 ?40次下載
    51<b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>定時(shí)器</b>

    51單片機(jī)定時(shí)器中斷

    定時(shí)器介紹:51單片機(jī)定時(shí)器屬于單片機(jī)的內(nèi)部資源,其電路連接和運(yùn)轉(zhuǎn)均在單片機(jī)的內(nèi)部完成定時(shí)器
    發(fā)表于 11-11 19:36 ?7次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>中斷

    51單片機(jī)定時(shí)器/計(jì)數(shù)

    一、課前須知:1、51單片機(jī)有兩組定時(shí)器/計(jì)數(shù),因?yàn)榧瓤梢?b class='flag-5'>定時(shí),也可以計(jì)數(shù),所以稱之為定時(shí)器/計(jì)數(shù)
    發(fā)表于 11-20 20:06 ?47次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>/計(jì)數(shù)<b class='flag-5'>器</b>

    51單片機(jī)定時(shí)器中斷

    定時(shí)器介紹:51單片機(jī)定時(shí)器屬于單片機(jī)的內(nèi)部資源,其電路連接和運(yùn)轉(zhuǎn)均在單片機(jī)的內(nèi)部完成定時(shí)器
    發(fā)表于 11-20 20:36 ?15次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>中斷

    定時(shí)器用法以及pwm的調(diào)速

    今天我們來(lái)講一下定時(shí)器用法以及PWM的調(diào)速我們最初接觸的51單片機(jī)有兩組定時(shí)器(計(jì)數(shù)),因?yàn)榧瓤梢?b class='flag-5'>定
    發(fā)表于 11-24 21:06 ?5次下載
    <b class='flag-5'>定時(shí)器</b>的<b class='flag-5'>用法</b>以及pwm的調(diào)速

    單片機(jī)定時(shí)器驅(qū)動(dòng)

    RD8Tx單片機(jī)定時(shí)器閃燈程序。
    的頭像 發(fā)表于 04-23 09:16 ?26.2w次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>驅(qū)動(dòng)