超詳細!新手必看!STM32-通用定時器簡介與知識點概括

一、通用定時器的功能

在基本定時器功能的基礎上新增功能:
通用定時器有4個獨立通道,且每個通道都可以用于下面功能。
(1)輸入捕獲:測量輸入信號的周期和占空比等。
(2)輸出比較:產生輸出特定的波形(根據自己需要設置)。
(3)輸出PWM。
(4)單脈沖模式.
(5)級聯。(一個定時器的溢出事件可以使能下一個定時器的計數器開始計數)
(6)可以觸發DAC、ADC。
(7)支持編碼器和霍爾傳感器電路。

如果不知道基本定時器的功能請看:STM32基本定時器。這里就不再過多詳細介紹。

以STM32F103系列為例,具體開發板請查看開發手冊。

類別定時器總線位數計數方向預分頻系數是否可以產生DMA捕獲/比較通道互補輸出
基本定時器TIM6 / TIM7APB116位向上1~65536可以0
通用定時器TIM2 /TIM3 /TIM4/ TIM5APB116位向上/向下/中央對齊1~65536可以4
高級定時器TIM1 /TIM8APB216位向上/向下/中央對齊1~65536可以4

二、通用定時器的框圖

在這里插入圖片描述

三、通用定時器知識點匯總

在配置通用定時器前,需要了解一些關于通用定時器的知識點。

1. 時鐘源選擇

基本定時器的時鐘源來自于內部時鐘。而通用定時器的時鐘源有四類:
● 內部時鐘(CK_INT) :總線APB提供的時鐘。

在這里插入圖片描述

● 外部時鐘模式1:外部輸入腳(TIx) ,來自定時器通道1或者通道2引腳的信號。

在這里插入圖片描述
在這里插入圖片描述
TI1F_ED 表示來自于 CH1,并且沒有經過邊沿檢測器過濾的信號,所以它是 CH1 的雙邊沿信號,即上升沿或者下降沿都是有效的。TI1FP1 表示來自 CH1 并經過邊沿檢測器后的信號,可以是上升沿或者下降沿。TI2FP2 表示來自 CH2 并經過邊沿檢測器后的信號,可以是上升沿或者下降沿。

● 外部時鐘模式2:外部觸發輸入(ETR) 。
在這里插入圖片描述
在這里插入圖片描述
定時器時鐘信號首先從 ETR 引腳進來。接著經過外部觸發極性選擇器,由 ETP 位來設置上升沿有效還是下降沿有效,選擇下降沿有效的話,信號會經過反相器。然后經過外部觸發預分頻器,由 ETPS[1:0]位來設置預分頻系數,系數范圍:1、2、4、8。緊接著經過濾波器器,由 ETF[3:0]位來設置濾波方式,也可以設置不使用濾波器。fDTS 由TIMx_CR1 寄存器的 CKD 位設置。

● 內部觸發輸入(ITRx):使用一個定時器作為另一個定時器的預分頻器,如可以配置一個定時器Timer1而作為另一個定時器Timer2的預分頻器。
在這里插入圖片描述
在這里插入圖片描述
內部觸發輸入是使用一個定時器作為另一個定時器的預分頻器,即實現定時器的級聯。上圖中表示的是TIM1作為TIM2的預分頻器。
設置需要完成以下配置:
(1) TIM1_CR2 寄存器的 MMS[2:0]位設置為 010,即 TIM1 的主模式選擇為更新(選擇更新事件作為觸發輸出 (TRGO))。
(2) TIM2_SMCR 寄存器的 TS[2:0]位設置為 000,即使用 ITR1 作為內部觸發。TS[2:0]位用于配置觸發選擇,除了 ITR1,還有其他的選擇。
(3) TIM2_SMCR 寄存器的 SMS[2:0]位設置為 111,即從模式控制器選擇外部時鐘模式 1。
(4) TIM1 和 TIM2 的 CEN 位都要置 1,即啟動計數器。

在這里插入圖片描述

計數器時鐘源寄存器設置方法:

計數器時鐘選擇類型設置方法
內部時鐘(CK_INT)設置TIMx_SMCR的SMS=000
外部時鐘模式1設置TIMx_SMCR的SMS=111
外部時鐘模式2設置TIMx_SMCR的ECE=1
內部觸發輸入(ITRx)參考STM32F10xxx參考手冊_V10

2. 控制器

控制器包括:從模式控制器、編碼器接口和觸發控制器(TRGO)。從模式控制器可以控制計數器復位、啟動、遞增/遞減、計數。編碼器接口針對編碼器計數。觸發控制器用來提供觸發信號給別的外設,比如為其它定時器提供時鐘或者為 DAC/ADC 的觸發轉換提供信號。

3. 時基單元

時基單元包括:計數器寄存器(TIMx_CNT)、預分頻器寄存器(TIMx_PSC)、自動重載寄存器(TIMx_ARR)。這部分內容和基本定時器基本一樣的。

4.模式選擇

如果使用輸入捕獲模式,框圖中的第③部分和④是一起配置的。
如果使用輸出比較模式。框圖中的第④部分和⑤是一起配置的。
注意:如果設置輸入捕獲模式,就不能設置輸出比較模式。只能設置其中一種模式。

5. 框圖分析

<1> 設置輸入捕獲模式,即框圖中的③④。
TIM3_CH1(PA.6) ----> TI1(外部信號) -------> 輸入濾波器]以及邊沿檢測器(檢測上升沿還是下降沿) -----> IC1(濾波器輸出信號) -------> 輸入捕獲預分頻器IC1PSC[1:0] ----> 捕獲/比較1寄存器CCR1。

假設::我們需要捕獲上升沿,則當濾波器和邊沿檢測器捕獲到上升沿后,CNT計數器中的值會加1,同時捕獲/比較寄存器中會鎖存計數器的值。

TI1FP1 是來自于通道TI1,經過輸入濾波和邊沿檢測后送給捕獲比較通道IC1;
TI1FP2 是來自于通道TI1,經過輸入濾波和邊沿檢測后送給捕獲比較通道IC2;
TI1FP1和TI1FP2這兩個信號的特性是一模一樣的,都是通道1的信號經過濾波和邊沿檢測之后產生的信號,只是TI1FP1是送給捕獲比較通道IC1,TI1FP2是送給捕獲比較通道IC2。
其他定時器通道同理!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160994.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gradle常用命令與參數依賴管理和版本決議

一、Gradle 常用命令與參數 本課程全程基于 Gradle8.0 環境 1、Gradle 命令 介紹 gradle 命令之前我們先來了解下 gradle 命令怎么在項目中執行。 1.1、gradlew gradlew 即 Gradle Wrapper&#xff0c;在學習小組的第一課時已經介紹過了這里就不多贅述。提一下執行命令&am…

.Net6使用WebSocket與前端進行通信

1. 創建類WebSocketTest&#xff1a; using System.Net.WebSockets; using System.Text;namespace WebSocket.Demo {public class WebSocketTest{//當前請求實例System.Net.WebSockets.WebSocket socket null;public async Task DoWork(HttpContext ctx){socket await ctx.We…

為UE和Unity開發者準備的Godot指南

為UE和Unity開發者準備的Godot指南 ——兩位大哥打架&#xff0c;請帶上我 這兩天游戲行業又開始熱鬧了&#xff0c;昨天兩條信息直接刷爆朋友圈&#xff0c;最大的兩家游戲引擎公司懟起來了。 《為Unity開發者準備的虛幻引擎指南》&#xff1a; 為Unity開發者準備的虛幻引擎指…

sso 四種授權模式

單點登錄 單點登錄&#xff0c;英文是 Single Sign On&#xff08;縮寫為 SSO&#xff09;。即多個站點共用一臺認證授權服務器&#xff0c;用戶在站點登錄后&#xff0c;可以免登錄訪問其他所有站點。而且&#xff0c;各站點間可以通過該登錄狀態直接交互。例如&#xff1a; …

C#編程題分享(3)

n的階乘問題 輸?整數n&#xff0c;輸出n的階乘。 int n Convert.ToInt32(Console.ReadLine()); int jiecheng 1; for (int i 1; i < n 1; i) {jiecheng * i; // 1 * 2 * 3 * .....} Console.WriteLine("{0}的階乘是&#xff1a;{1}", n, jiecheng); q^n次…

Clickhouse設置多磁盤存儲策略

設置多磁盤存儲 clickhouse安裝完成以后&#xff0c;配置了一個默認的存儲空間&#xff0c; 這個只能配置一個目錄&#xff0c;如果要使用多個磁盤目錄&#xff0c;則需要配置磁盤組策略 查看當前的存儲策略 select name, path, formatReadableSize(free_space) as free, fo…

Django DRF版本號的處理

在restful規范中&#xff0c;后端的API中需要體現版本。如果項目比較大&#xff0c;需要些很多的視圖類&#xff0c;在每一個類中都寫一遍會比較麻煩&#xff0c;所以drf中也支持了全局配置。在每個版本處理的類中還定義了reverse方法&#xff0c;他是用來反向生成URL并攜帶相關…

還記得高中生物書上的莫斯密碼嗎?利用Python破解摩斯密碼的代碼示例!

文章目錄 前言摩爾斯電碼Python實現摩斯密碼對照表加密解密測試 完整代碼總結關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Python學習書籍四、Python工具包項目源碼合集①Python工具包②Python實戰案例③Python小游戲源碼五、面試資料六、Py…

Arduino驅動MLX90614紅外溫度傳感器(溫濕度傳感器)

目錄 1、傳感器特性 2、MLX90614發射率補償方法 3、控制器和傳感器連線圖 4、驅動程序 MLX90614紅外測溫模塊,通過探測物體紅外輻射能量的大小和波長的分布來檢測物體的表面溫度。紅外測溫器由光學系統、光電探測器、信號放大器

一文讀懂 Linux mmap

文章目錄 1.簡介2.實現原理3.相關函數4.mmap和常規文件操作的區別5.作用參考文獻 1.簡介 mmap&#xff08;memory map&#xff09;即內存映射&#xff0c;用于將一個文件或設備映射到進程的地址空間。 實現這樣的映射關系后&#xff0c;進程虛擬地址空間中一段內存地址將與文…

TorchScript C++ 自定義運算符 cpucuda

參考 在 C 中注冊調度運算符 使用自定義 C 運算符擴展 TorchScript 環境&#xff1a; NVIDIA Driver Version : 545.23.08CUDA Version: 12.1Python Version: 3.11Pytorch Version: 2.1Cmake version : 3.18.1工作目錄&#xff1a;workspace/test 一、 C 自定義運算符 創建…

逐字節講解 Redis 持久化(RDB 和 AOF)的文件格式

前言 相信各位對 Redis 的這兩種持久化機制都不陌生&#xff0c;簡單來說&#xff0c;RDB 就是對數據的全量備份&#xff0c;AOF 則是增量備份&#xff0c;而從 4.0 版本開始引入了混合方式&#xff0c;以 7.2.3 版本為例&#xff0c;會生成三類文件&#xff1a;RDB、AOF 和記…

2014年5月28日 Go生態洞察:GopherCon 2014大會回顧

&#x1f337;&#x1f341; 博主貓頭虎&#xff08;&#x1f405;&#x1f43e;&#xff09;帶您 Go to New World?&#x1f341; &#x1f984; 博客首頁——&#x1f405;&#x1f43e;貓頭虎的博客&#x1f390; &#x1f433; 《面試題大全專欄》 &#x1f995; 文章圖文…

Java面試附答案:掌握關鍵技能,突破面試難題!

問題&#xff1a;什么是大O表示法&#xff1f;它在Java中的應用是什么&#xff1f; 回答&#xff1a; 大O表示法是一種用來衡量算法復雜度的方法&#xff0c;它描述了算法的時間復雜度和空間復雜度的增長速度。它使用符號O(n)來表示算法的漸進時間復雜度&#xff0c;其中n表示…

如何讓Python2與Python3共存

安裝 首先分別安裝Py2和Py3&#xff0c;我都安裝到C盤根目錄里了&#xff0c;然后分別將Py2和Py3都配置到系統環境變量中去&#xff1a;C:\Python36\Scripts\;C:\Python36\;C:\Python27\;C:\Python27\Scripts; 配置 修改兩個版本的可執行文件名字 驗證 重新配置一下pip …

Ubuntu刪除應用圖標

刪除用戶下的圖標 sudo nautilus ~/.local/share/applications刪除系統下的圖標 sudo nautilus /usr/share/applications

大數據-之LibrA數據庫系統告警處理(ALM-25500 KrbServer服務不可用)

告警解釋 系統按30秒周期性檢測組件KrbServer的服務狀態。當檢測到組件KrbServer服務異常時產生該告警。 當檢測到組件KrbServer服務恢復時告警恢復。 告警屬性 告警ID 告警級別 可自動清除 25500 致命 是 告警參數 參數名稱 參數含義 ServiceName 產生告警的服務…

解決MySQL中某列數據過長無法入庫的問題-Details:data too long for column `xxx` at row 1

問題描述&#xff1a; 我在將軌跡的經緯度轉換為字符串入庫時&#xff0c;遇到寫入問題 Mysql數據入庫報錯&#xff1a; Caused by:java.long.exception:寫入數據庫表失敗.Details:data too long for column xxx at row 1&#xff0c;我的xxx字段類型是string,在mysql庫表中…

加速CI構建,實現高效流水線——CloudBees CI發布工作區緩存功能

加速軟件交付流程能夠更快接觸到客戶&#xff0c;獲得競爭優勢。然而&#xff0c;識別這一過程中存在的瓶頸可能頗具挑戰。讓我們從審查構建和測試階段開始著手。例如&#xff0c;當CI作業執行時間較長時&#xff0c;它會延遲開發人員的反饋循環&#xff0c;從而可能導致發布延…

使用Python解析CAN總線

緣起 在新能源車輛的開發和維護中&#xff0c;經常需要對CAN總線數據進行分析。CANOE等總線軟件雖然方便&#xff0c;但功能有限&#xff0c;難以滿足數據分析的要求。Matlab的Vehicle Network Toolbox可以方便的進行數據解析和分析&#xff0c;它是閉源且收費的。因此&#x…