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

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

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

3天內不再提示

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

CW32生態社區 ? 來源: CW32生態社區 ? 作者: CW32生態社區 ? 2023-12-28 11:24 ? 次閱讀

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

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

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

圖片2.png

圖片3.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個可以用來輸出|輸入的電信號道路 。那這個通道輸出的是什么東西呢?
圖片4.png

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

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

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

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

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

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

審核編輯 黃宇

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

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5181

    瀏覽量

    213796
  • 時鐘
    +關注

    關注

    10

    文章

    1733

    瀏覽量

    131446
  • 定時器
    +關注

    關注

    23

    文章

    3246

    瀏覽量

    114719
  • CW32
    +關注

    關注

    1

    文章

    203

    瀏覽量

    626
收藏 人收藏

    評論

    相關推薦

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

    此篇文章是CW32F030C8T6的參考資料,很詳細,適合初學者。
    的頭像 發表于 08-10 11:13 ?1113次閱讀
    【<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 電容式觸摸按鍵設計指南

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

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

    本章針對CW32F030C8T6的時鐘樹進行詳細解析,續第一章啟動文件的相關講解。
    的頭像 發表于 08-17 14:54 ?976次閱讀
    【<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通用定時器為例介紹單片機定時器的用法。
    的頭像 發表于 01-04 10:37 ?1390次閱讀
    單片機<b class='flag-5'>定時器</b>的用法

    那么點詳細CW32學習筆記】模數轉換

    來說,想要判斷大小就需要有對比,因此該數字指示的電壓大小實際上是一個比較的結果。 ADC將需要測量的電壓信號Ut與已知電壓的信號U作比較,并最終輸出一個數字表示Ut相當于多少比例的U。 接下來就可以看看
    的頭像 發表于 02-29 09:41 ?767次閱讀
    【<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>

    STM32通用定時器學習筆記

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

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

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

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

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

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

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

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

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

    CW32通用輸入輸出端口詳解

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

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

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

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

    本章介紹CW32通用異步收發的使用。 雖然大部分時候會被簡單稱為“串口”,但實際上 用“串口”來指代UART并不正確 。串口對應并口的概念,在串口通信中,數據被以二進制形式發送,并且每次發送都只
    的頭像 發表于 11-17 17:30 ?764次閱讀
    【<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>異步收發<b class='flag-5'>器</b>—發送篇

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

    例程鏈接 : https://pan.baidu.com/s/1s1XwqDFkO8fK4SRSTKsNhA?pwd=mshk 提取碼 :mshk 本章將介紹CW32的IIC接口,并最終點亮一塊
    的頭像 發表于 01-11 09:53 ?618次閱讀
    【<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接口-主機發送
    主站蜘蛛池模板: 日韩 国产 欧美视频二区| 久久精品一卡二卡三卡四卡视频版 | 久久婷婷色一区二区三区| 久久国产精品免费A片蜜芽| 久久免费看视频| 欧美乱码伦视频免费66网| 亲嘴扒胸摸屁股视频免费网站 | 亚洲精品白色在线发布| 妖精视频一区二区免费| 18videosex性欧美黑色| 芭乐视频免费资源在线观看| 大胸美女洗澡扒奶衣挤奶| 国产亚洲欧美ai在线看片| 久久精品国产亚洲AV久五月天 | 青青草原伊人| 忘忧草研究所 麻豆| 一二三四在线观看韩国| 99RE久久精品国产| 国产精品.XX视频.XXTV| 和搜子的日子 在线观看| 男人的天堂色| 忘忧草研究所 麻豆| 中字幕久久久人妻熟女天美传媒 | 成人国产AV精品久久久久| 国产区精品综合在线| 老司机亚洲精品影院在线观看| 人妻插B视频一区二区三区| 无人区尖叫之夜美女姐姐视频| 伊人久久久久久久久香港| tobu中国日本高清| 国产在线播放精品视频| 免费观看a视频| 羞羞影院男女爽爽影院尤物| 猪蜜蜜网站在线观看电视剧| 国产AV亚洲精品久久久久软件| 精品一产品大全| 三级电影免费看| 中文字幕精品视频在线| 国产成人免费全部网站| 看美女大腿中间的部分| 午夜向日葵视频在线观看|