色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

單片機定時器的用法

jf_qE49KoVBr8 ? 來源:武漢芯源半導體 ? 2024-01-04 10:37 ? 次閱讀

本章以CW32通用定時器為例介紹單片機定時器的用法。

定時器是單片機中一個非常傳統且重要的外設,定時器的本質其實就是一個計數器,只不過被計數的對象是定時器的時鐘源。定時器要正常工作,需要這幾個要點步驟:有時鐘源輸入、計數器工作、有一個可以比較的值(自動重裝載值)。其工作流程是這樣的:計數器會隨著時鐘源對時鐘源提供的脈沖進行計數,計數值不斷上漲(或下降),如果計數值和自動重裝載值一樣,那么計數器的值就會被硬件清零重新計數,這個清零重新計數被稱為定時器計數溢出,這個事情會觸發一個中斷,被叫做定時器溢出中斷,也就是說,定時器依靠對穩定的時鐘源定次數計數來實現定時,并且每一個定時周期完成都會產生溢出中斷。

上面講述的就是任何一個定時器都會具備的功能,只要是個定時器就會有,程序上為了方便,關于上述功能的配置項都被以”base”命名,比如這樣:

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

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

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

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

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

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

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

本章使用的是通用定時器,下面介紹高級定時器的捕獲/比較功能,因為這個功能很常用。

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

下面就來看看通用定時器的結構框圖,初看這個圖可能會不知所措,我們可以先進行簡單的劃分,框圖上半部分的右側有一個16位計數器,計數器可以從左側選擇輸入的時鐘源,可以對輸入進行分頻。框圖下半部分展示了定時器的4個捕獲比較通道channel1~channel4,通道可以用來輸出也可以用來輸入,但同一時間只能使用輸入|輸出中的一個功能。筆者剛學習單片機的時候,不知道通道是什么,總是稀里糊涂的,通道就是讓信號走的路,放到這里就是說,這個定時器擁有4個可以用來輸出|輸入的電信號道路。那這個通道輸出的是什么東西呢?

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

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

現在來看使用PWM功能需要進行哪些操作。先思考,除去基本的定時器配置之外,PWM需要用到捕獲比較通道,那必然會有對比較捕獲功能相關寄存器的配置,它需要輸出一個波,那必定會有引腳相關的初始化。

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

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

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

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

下面就是緊張刺激的驗證環節了,筆者手上沒有可以接的用來發光的燈泡,所以直接用萬用表測量輸出引腳的電壓來驗證PWM功能,萬用表在測量方波時,會顯示該方波的平均值,所以如果PWM正常,萬用表的直流檔會顯示1.65V左右的電壓,交流檔會顯示3.3V的電壓,這里我為了使現象更明顯,在中斷中對PWM波的占空比進行周期性修改。

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

經過測量,占空比50%時,PA6輸出電壓為1.62V,算上誤差這個在預期結果內。而加入中斷的代碼后,萬用表示數會周期性跳變,符合預期結果,可以認定該配置下,PWM功能正常工作。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6050

    文章

    44707

    瀏覽量

    641354
  • 計數器
    +關注

    關注

    32

    文章

    2278

    瀏覽量

    95453
  • 輸出電壓
    +關注

    關注

    2

    文章

    1241

    瀏覽量

    38597
  • 定時器
    +關注

    關注

    23

    文章

    3259

    瀏覽量

    115929
  • CW32
    +關注

    關注

    1

    文章

    221

    瀏覽量

    835

原文標題:【CW32學習筆記】通用定時器——輸出比較

文章出處:【微信號:武漢芯源半導體,微信公眾號:武漢芯源半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【有那么點詳細的CW32學習筆記】通用定時器——輸出比較

    本章以CW32通用定時器為例介紹單片機定時器用法定時器單片機中一個非常傳統且重要的外設,
    的頭像 發表于 12-28 11:24 ?1482次閱讀
    【有那么點詳細的CW32學習筆記】通用<b class='flag-5'>定時器</b>——輸出比較

    定時器的基本用法是什么

    定時器單片機里非常重要的一個模塊,必須熟練掌握,本篇按這樣的順序展開:一、簡單介紹定時器二、定時器基本用法三、
    發表于 07-16 09:01

    基于51單片機定時器2的操作與實現

    基于51單片機定時器2的操作與實現,51單片機定時器2的使用!
    發表于 02-22 17:53 ?14次下載

    52單片機有幾個定時器?52單片機定時器1和52單片機定時器2程序對比

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

    【C51】單片機定時器介紹

    【C51】單片機定時器介紹 標準51架構的單片機有2個定時器 :T0 和 T1,他們2個的用法幾乎一樣。下面主要講T0
    發表于 11-24 01:32 ?3737次閱讀
    【C51】<b class='flag-5'>單片機</b><b class='flag-5'>定時器</b>介紹

    51單片機定時器工作原理

    51單片機定時器工作原理及用法
    的頭像 發表于 03-14 13:51 ?9.7w次閱讀

    51單片機定時器T0的中斷使用法詳細說明

    本文檔的主要內容詳細介紹的是51單片機定時器T0的中斷使用法詳細說明程序免費下載。
    發表于 08-22 17:30 ?0次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>定時器</b>T0的中斷使<b class='flag-5'>用法</b>詳細說明

    基于單片機定時器的設計方法

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

    51單片機——定時器的原理和使用

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

    51單片機——定時器

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

    51單片機定時器中斷

    定時器介紹:51單片機定時器屬于單片機的內部資源,其電路連接和運轉均在單片機的內部完成定時器
    發表于 11-11 19:36 ?7次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>定時器</b>中斷

    51單片機定時器/計數

    一、課前須知:1、51單片機有兩組定時器/計數,因為既可以定時,也可以計數,所以稱之為定時器/計數
    發表于 11-20 20:06 ?47次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>定時器</b>/計數<b class='flag-5'>器</b>

    51單片機定時器中斷

    定時器介紹:51單片機定時器屬于單片機的內部資源,其電路連接和運轉均在單片機的內部完成定時器
    發表于 11-20 20:36 ?15次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>定時器</b>中斷

    定時器用法以及pwm的調速

    今天我們來講一下定時器用法以及PWM的調速我們最初接觸的51單片機有兩組定時器(計數),因為既可以
    發表于 11-24 21:06 ?5次下載
    <b class='flag-5'>定時器</b>的<b class='flag-5'>用法</b>以及pwm的調速

    單片機定時器驅動

    RD8Tx單片機定時器閃燈程序。
    的頭像 發表于 04-23 09:16 ?26.2w次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>定時器</b>驅動
    主站蜘蛛池模板: yellow片在线观看免费观看动漫 | 日韩高清一区二区三区不卡 | 国产精品v片在线观看不卡 国产精品v欧美精品v日韩 | 最新国产精品视频免费看 | 国产一卡2卡3卡4卡孕妇网站 | 又黄又肉到湿的爽文 | 艳照门在线播放 | 国内外成人免费在线视频 | qovd电影 | xxxx18动漫| 狠狠国产欧美在线视频 | 欧美兽交YOYO | YELLOW视频在线观看免费版高清 | 2021全国精品卡一卡二 | 欧美深深色噜噜狠狠yyy | 亚洲伊人久久大香线蕉综合图片 | 全是肉的高h短篇列车 | 啊好深啊别拔就射在里面 | a一级毛片视频免费看 | 亚洲综合久久一本伊伊区 | 亚洲黄色网页 | 二级特黄绝大片免费视频大片 | 国产69精品久久久久乱码免费 | 9420高清免费观看在线大全 | 欧美GV肉片视频免费观看 | YELLOW视频直播在线观看 | 少妇两个奶头喷出奶水了怎么办 | 无码AV熟妇素人内射V在线 | 亚洲中文有码字幕日本 | 狠狠干.in | 花蝴蝶在线观看中字 | 国产高清-国产av | 国产精品99久久久久久AV下载 | 99视频久久精品久久 | 国产成人精品午夜福麻豆报告 | 辣文肉高h粗暴 | 性绞姿始动作动态图 | 果冻传媒在线观看进入窗口 | 免费看a视频 | 亚洲欧洲免费三级网站 | 亚洲国产在线99视频 |