精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

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

CW32生態(tài)社區(qū) ? 來源: CW32生態(tài)社區(qū) ? 作者: CW32生態(tài)社區(qū) ? 2023-12-28 11:24 ? 次閱讀

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

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

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

圖片2.png

圖片3.png

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

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

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

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

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

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

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

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

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

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

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

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

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

審核編輯 黃宇

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

    關注

    31

    文章

    5317

    瀏覽量

    120004
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5141

    瀏覽量

    213397
  • 時鐘
    +關注

    關注

    10

    文章

    1720

    瀏覽量

    131364
  • 定時器
    +關注

    關注

    23

    文章

    3237

    瀏覽量

    114467
  • CW32
    +關注

    關注

    1

    文章

    183

    瀏覽量

    587
收藏 人收藏

    評論

    相關推薦

    那么點詳細CW32學習筆記】單片機啟動\庫函數(shù)構成

    此篇文章是CW32F030C8T6的參考資料,很詳細,適合初學者。
    的頭像 發(fā)表于 08-10 11:13 ?1063次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】單片機啟動\庫函數(shù)構成

    【應用筆記CW32 電容式觸摸按鍵設計指南

    系列小規(guī)模MCU的IO、比較、定時器、高速高精度內(nèi)置RC時鐘源以及高算力等功能,通過檢測電路端子電容的微小變化和波動,實現(xiàn)電容式觸摸按鍵功能。其外圍電路簡單,占用資源比例不高,非常有利于用戶在節(jié)約BO
    的頭像 發(fā)表于 07-04 11:44 ?986次閱讀
    【應用<b class='flag-5'>筆記</b>】<b class='flag-5'>CW32</b> 電容式觸摸按鍵設計指南

    那么點詳細CW32學習筆記】看手冊配置時鐘樹

    本章針對CW32F030C8T6的時鐘樹進行詳細解析,續(xù)第一章啟動文件的相關講解。
    的頭像 發(fā)表于 08-17 14:54 ?938次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】看手冊配置時鐘樹

    單片機定時器的用法

    本章以CW32通用定時器為例介紹單片機定時器的用法。
    的頭像 發(fā)表于 01-04 10:37 ?1345次閱讀
    單片機<b class='flag-5'>定時器</b>的用法

    那么點詳細CW32學習筆記】模數(shù)轉換

    來說,想要判斷大小就需要有對比,因此該數(shù)字指示的電壓大小實際上是一個比較的結果。 ADC將需要測量的電壓信號Ut與已知電壓的信號U作比較,并最終輸出一個數(shù)字表示Ut相當于多少比例的U。 接下來就可以看看
    的頭像 發(fā)表于 02-29 09:41 ?737次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】模數(shù)轉換<b class='flag-5'>器</b>

    STM32通用定時器學習筆記

    STM32-通用定時器學習筆記一、通用定時器學習st
    發(fā)表于 08-19 08:48

    【應用筆記CW32 自舉程序中使用的 ISP 協(xié)議

    提供的 ISP 模式,通過 UART 串口方便地實現(xiàn)對 CW32 微控制片上 FLASH主存儲的擦除和燒寫。本應用筆記將介紹如何進入 CW32
    發(fā)表于 06-06 13:26

    CW32飯盒派開發(fā)板試用體驗】+定時器操作初探討

    CW32F030x6/x8 微控制內(nèi)部集成多達四個通用定時器、三個基本定時器和一個高級控制定時器
    發(fā)表于 06-10 22:46

    STM32CubeMX學習筆記(23)——通用定時器接口使用(輸入捕獲測量脈寬)

    定時,沒有外部 IO。通用定時器 TIM2/3/4/5 是一個 16 位的可以向上/下計數(shù)的定時器,可以定時,可以
    發(fā)表于 11-26 15:51 ?63次下載
    STM32CubeMX<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>(23)——<b class='flag-5'>通用</b><b class='flag-5'>定時器</b>接口使用(輸入捕獲測量脈寬)

    STM32CubeMX學習筆記(5)——基本定時器接口使用

    定時,沒有外部 IO。通用定時器 TIM2/3/4/5 是一個 16 位的可以向上/下計數(shù)的定時器,可以定時,可以
    發(fā)表于 12-05 13:21 ?6次下載
    STM32CubeMX<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>(5)——基本<b class='flag-5'>定時器</b>接口使用

    CW32定時器操作講解——輸入捕獲

    CW32定時器操作講解——輸入捕獲
    的頭像 發(fā)表于 09-27 16:06 ?913次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>定時器</b>操作講解——輸入捕獲

    CW32通用輸入輸出端口詳解

    CW32通用輸入輸出端口詳解
    的頭像 發(fā)表于 10-30 17:33 ?1038次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>通用</b>輸入<b class='flag-5'>輸出</b>端口詳解

    應用筆記-CW32 自舉程序中使用的 ISP 協(xié)議

    ,通過UART串口方便地實現(xiàn)對CW32微控制片上FLASH主存儲的擦除和燒寫。本應用筆記將介紹如何進入CW32微控制
    發(fā)表于 06-06 13:37 ?7次下載

    那么點詳細CW32學習筆記通用異步收發(fā)—發(fā)送篇

    本章介紹CW32通用異步收發(fā)的使用。 雖然大部分時候會被簡單稱為“串口”,但實際上 用“串口”來指代UART并不正確 。串口對應并口的概念,在串口通信中,數(shù)據(jù)被以二進制形式發(fā)送,并且每次發(fā)送都只
    的頭像 發(fā)表于 11-17 17:30 ?737次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】<b class='flag-5'>通用</b>異步收發(fā)<b class='flag-5'>器</b>—發(fā)送篇

    那么點詳細CW32學習筆記】IIC接口-主機發(fā)送

    例程鏈接 : https://pan.baidu.com/s/1s1XwqDFkO8fK4SRSTKsNhA?pwd=mshk 提取碼 :mshk 本章將介紹CW32的IIC接口,并最終點亮一塊
    的頭像 發(fā)表于 01-11 09:53 ?573次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】IIC接口-主機發(fā)送