MCU開發學習記錄8 - 基本定時器學習與實踐(HAL庫) - 定時器DMA循環模式修改ARR值、定時器中斷方式修改ARR值 - STM32CubeMX

名詞解釋:

TRGO:Trigger Out General Purpose Output
ARR:Auto-reload?
PSC:Prescaler
CNT:Counter
EGR:event generation register

? ? ? ? 本文將介紹基本定時器的概念、相關函數以及STM32CubeMX生成定時器的配置函數以及對生成定時器的配置函數進行分析(包括結構體配置、相關寄存器配置)。

????????最后針對于定時器實踐:使用TIM6使能DMA請求時,使用DMA、中斷兩種方式修改定時器的ARR值,并且用邏輯分析查看結果。

0. F4系列定時器分類

  1. 最大接口時鐘(Max interface clock (MHz))
    1. 定時器與系統內核(如MCU)之間的通信接口(如APB總線)支持的最高時鐘頻率。
    2. 它決定了定時器寄存器配置和狀態讀取的速度上限。例如,如果接口時鐘為84 MHz,則對定時器寄存器的讀寫操作需基于該頻率進行,不能超過此速率。
  2. ?最大定時器時鐘(Max timer clock (MHz))
    1.?定時器內部計數器(Counter)實際運行時的最高時鐘頻率。
    2.?它決定了定時器的計數速度,直接影響定時器的計時精度和輸出信號的頻率上限。例如,168 MHz的定時器時鐘意味著計數器每秒最多遞增168,000,000次。

????????
????????

1.?什么是基本定時器?

1.1?基本定時器概念

1.1.1 基本定時器功能

????????STM32F4系列的基本定時器為TIM6和TIM7。基本定時器包括16 位自動重載遞增計數器16 位可編程預分頻器,預分頻系數 1~65536,用于對計數器時鐘頻率進行分頻,還可以(TRGO)觸發 DAC 的同步電路,以及生成中斷/DMA 請求

1.1.2 基本定時器框圖

????????

  1. 時鐘來源 - APB1
    參考第0章第二個圖片,其時鐘內部計數頻率為84Mhz。
  2. TIM控制器
    復位、使能、計數與TRGO(通用觸發輸出)DAC。
  3. 時基單元
    ·?預分頻器寄存器 (TIMx_PSC) - 具有影子寄存器
    ·?計數器寄存器 (TIMx_CNT)
    ·?自動重載寄存器 (TIMx_ARR)- 具有影子寄存器
  4. 影子寄存器:
    ·?發生更新事件時,根據控制位傳輸到活動寄存器(實際執行的寄存器)的預裝載寄存器
    ·?U event:更新事件 UEV

1.2?基本定時器具體說明

1.2.1?基本定時器-時基單元

????????定時器的主要模塊由一個16位遞增計數器及其相關的自動重載寄存器組成。計數器的時鐘可通過預分頻器進行分頻。

·?TIMx_CR1.ARPE(自動重載預裝載使能位)
? ? ? ? 0:TIMx_ARR 寄存器不進行緩沖;1:TIMx_ARR 寄存器進行緩沖。
·?TIMx_CR1.UDIS(更新禁止 (Update disable)):用以使能/禁止 UEV 事件生成。
??
??????0:使能 UEV;1:禁止 UEV。
·?TIMx_CR1.CEN(計數器使能 (Counter enable))
????
????0:禁止計數器;1:使能計數器
·?TIMx_PSC(預分頻寄存器)
? ? ? ?
[15:0]:預分頻器值 (Prescaler value)

·?定時器計算器頻率與定時器時鐘的關系:?f_{CK\_CNT}=\frac{f_{CK\_PSC}}{PSC\left [ 15:0 \right ] +1}
·?TIMx__CR1.URS(更新請求源 (Update request source))
????????
0:使能時,所有以下事件(硬、軟件生成更新事件、從模式
控制器接收外部觸發信號產生的更新事件?(基本定時器沒有主從模式))都會生成更新中斷或 DMA 請求。
????????1:使能時,只有計數器上溢/下溢會生成更新中斷或 DMA 請求。
·?TIMx_EGR.UG(更新生成 (Update generation)):軟件強制產生更新事件
???????
?0:不執行任何操作;1:重新初始化定時器計數器并生成寄存器更新事件

1. PSC=1 -> PSC=4;使能自動重裝載寄存器

????????

2. PSC=2,ARR=36
????????

3. UG=1時,CK_CNT變化
????????CNT_INIT:
用于強制復位計數器并更新相關寄存器值?(如預分頻器 Prescaler、自動重載寄存器 ARR 等)。
????????

1.2.2?基本定時器-兩種更新事件

1. 軟件更新事件

????????將 TIMx_EGR 寄存器的位UG置 1,產生更新事件后,硬件會自動將UG位清零。

2. 軟件更新事件

????????每來一個CK_CNT脈沖,TIMx_CNT的值就會遞增加1。當 TIMx_CNT 值 與 TIMx_ARR 的設定值相等時,TIMx_CNT 的值就會被自動清零并且會生成更新事件。

1.2.3?基本定時器-調試模式

????????當微控制器進入調試模式時(Cortex?-M4F 內核停止),TIMx計數器會根據DBG模塊中 的DBG_TIMx_STOP配置位選擇繼續正常工作或者停止工作。
????????

2.?基于HAL庫配置基本定時器外設

2.1?CubeMX配置基本定時器外設

2.1.1 基本定時器6參數初始化

?????????

2.1.2 使能定時器6-DMA通道(TIM_UPdate為DMA請求信號)

????????HAL庫HAL_TIM_Base_Start_DMA設計DMA的外設地址是TIM6-ARR。
? ? ? ? 注意:要使能DMA的循環傳輸模式(單次傳輸模式需要再DMA中斷里面再次添加HAL_TIM_Base_Start_DMA(且單詞傳輸模式下,HAL_TIM_Base_Start_DMA使能定時器只執行一個周期就不在運行))

????????

????????

2.1.3 定時器6-相關中斷

?????????

2.2?基本定時器外設初始化流程

????????

????????

????????

????????????????
????????
????????

????????

2.3?基本定時器寄存器基地址

????????

2.4?基本定時器寄存器

????????

2.5?基本定時器相關函數匯總


3. 基本定時器實踐

3.1 利用TIM6中斷方式修改TIM6的ARR值

  1. main函數
  2. 中斷回調函數

?3.2 利用TIM6-DMA方式修改TIM6的ARR值

  1. main函數
  2. 中斷回調函數

3.3 實踐結果

? ? ? ? 通過LED反轉查看定時器的ARR值
? ? ? ? 每次ARR加1000(0.1s)

????????

4.?本文的工程文件下載鏈接

工程Github下載鏈接:https://github.com/chipdynkid/MCU-DL-STM32
(國內)工程Gitcode下載鏈接https://gitcode.com/chipdynkid/MCU-DL-STM32

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

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

相關文章

考研系列-計算機網絡沖刺考點匯總(上)

寫在前面 本文將總結王道408考研課程的計算機網絡沖刺考點的第一章到第三章內容(計算機網絡體系結構、物理層、數據鏈路層)。【圖片較多,加載需要時間,可以提前打開加載~~】 第一章、計算機網絡體系結構 注意:PCI(頭部…

設計模式每日硬核訓練 Day 14:組合模式(Composite Pattern)完整講解與實戰應用

🔄 回顧 Day 13:橋接模式小結 在 Day 13 中,我們學習了橋接模式(Bridge Pattern): 用于將“抽象”與“實現”分離,適用于雙維度變化場景(如圖形類型 渲染方式)。它強調…

訊聯桌面TV版apk下載-訊聯桌面安卓電視版免費下載安裝教程

在智能電視的使用過程中,一款好用的桌面應用能極大提升我們的使用體驗。訊聯桌面 TV 版就是這樣一款備受關注的應用,它可以讓安卓電視擁有更個性化、便捷的操作界面。今天,就為大家詳細介紹訊聯桌面 TV 版 apk 的免費下載安裝教程。 一、下載…

Nginx知識點

Nginx發展歷史 Nginx 是由俄羅斯程序員 Igor Sysoev 開發的高性能開源 Web 服務器、反向代理服務器和負載均衡器 ,其歷史如下: 起源與早期開發(2002 - 2004 年) 2002 年,當時 Igor Sysoev 在為俄羅斯門戶網站 Rambl…

uview1.0 tabs組件放到u-popup中在微信小程序中滑塊樣式錯亂

解決思路 重新計算布局信息&#xff1a;在彈窗顯示后重新調用 init 方法來計算組件的布局信息。使用 nextTick&#xff1a;保證在視圖更新之后再進行布局信息的計算。 <u-tabs ref"tabsRef" ></u-tabs> makeClick(){this.makeShowtruethis.$nextTick…

騰訊一面-軟件開發實習-PC客戶端開發方向

1.自我介紹就不多贅述了 2. 請介紹一下你的項目經歷 - 介紹了專輯鑒賞項目&#xff0c;前端使用html語言編寫&#xff0c;后端基于http協議使用C語言進行網頁開發。此外&#xff0c;還提及項目中涉及處理多線程問題以及做過內存池管理項目。 3. 項目中HTTP協議是使用庫實現的…

[數據可視化] Datagear使用心得:從數據整備到可視化聯動實踐

Datagear 是一款功能強大的數據可視化與報表工具&#xff0c;在日常數據分析與展示過程中&#xff0c;能有效幫助用戶構建交互式報表與面板。本文結合實際使用場景&#xff0c;總結了在 Datagear 平臺上關于元數據整備、Board 面板設計、圖表嵌入等方面的使用經驗&#xff0c;供…

【音視頻】MP4解封裝

一、概述 實現了讀取mp4文件&#xff0c;提取出h264和aac文件&#xff0c;可以直接播放 二、實現過程 準備文件 在build路徑下添加mp4文件 同時&#xff0c;添加main函數參數&#xff0c;表示輸入文件和輸出文件 打開文件 打開輸入文件&#xff0c;初始化格式上下文 char…

idea2024.1雙擊快捷方式打不開

idea2024.1突然雙擊快捷方式打不開&#xff0c;使用管理員運行也打不開 在安裝的idea路徑下的bin目錄下雙擊打開idea.bat文件&#xff0c;要是打不開使用txt格式打開&#xff0c;打開后在最后一行加上pause&#xff0c;之后保存。 看看報錯信息是不是有一個initializedExcept…

【錯誤記錄】Windows 命令行程序循環暫停問題分析 ( 設置 “ 命令記錄 “ 選項 | 啟用 “ 丟棄舊的副本 “ 選項 | 將日志重定向到文件 )

文章目錄 一、報錯信息二、問題分析1、Windows 命令行的緩沖區機制2、命令記錄設置 三、解決方案1、設置 " 命令記錄 " 選項2、將日志重定向到文件 一、報錯信息 Java 程序中 , 設置 無限循環 , 每次循環 休眠 10 秒后 , 再執行程序邏輯 , 在命令行中打印日志信息 ; …

STM32H5開發陀螺儀LSM6DSV16X(1)----輪詢獲取陀螺儀數據

STM32H5開發陀螺儀LSM6DSV16X.1--輪詢獲取陀螺儀數據 概述視頻教學樣品申請源碼下載硬件準備參考程序通信模式管腳定義IIC通信模式速率新建工程工程模板保存工程路徑芯片配置工程模板選擇時鐘設置UART配置UART屬性配置設置e2studio堆棧e2studio的重定向printf設置R_SCI_UART_Op…

Android端使用無障礙服務實現遠程、自動刷短視頻

最近在做一個基于無障礙自動刷短視頻的APP&#xff0c;需要支持用任意藍牙遙控器遠程控制&#xff0c; 把無障礙服務流程大致研究了一下&#xff0c;從下面3個部分做一下小結。 1、需要可調整自動上滑距離和速度以適配不同的屏幕和應用 智能適配99%機型&#xff0c;滑動參數可…

Spark和Hadoop的區別和聯系

Hadoop 和 Spark 的區別 1. 架構 Hadoop&#xff1a;基于 HDFS&#xff08;分布式文件系統&#xff09;和 MapReduce&#xff08;分布式計算框架&#xff09;。HDFS 負責數據的分布式存儲&#xff0c;而 MapReduce 是其主要的計算框架&#xff0c;通過 Map 和 Reduce 任務進行…

【版本控制】idea中使用git

大家好&#xff0c;我是jstart千語。接下來繼續對git的內容進行講解。也是在開發中最常使用&#xff0c;最重要的部分&#xff0c;在idea中操作git。目錄在右側哦。 如果需要git命令的詳解&#xff1a; 【版本控制】git命令使用大全-CSDN博客 一、配置git 要先關閉項目&#xf…

論文閱讀:2023 arxiv A Survey of Reinforcement Learning from Human Feedback

A Survey of Reinforcement Learning from Human Feedback https://arxiv.org/pdf/2312.14925 https://www.doubao.com/chat/3506943124865538 速覽 這篇論文是關于“從人類反饋中進行強化學習&#xff08;RLHF&#xff09;”的綜述&#xff0c;核心是講如何讓AI通過人類反…

單片機 + 圖像處理芯片 + TFT彩屏 進度條控件

進度條控件使用說明 概述 本進度條控件基于單片機 RA8889/RA6809 TFT開發&#xff0c;提供了簡單易用的進度顯示功能。控件支持多個進度條同時顯示、自定義顏色、邊框和標簽等特性&#xff0c;適用于需要直觀顯示進度信息的各類應用場景。 特性 支持多個進度條同時顯示可…

數據處理: OPTICS聚類及Python實現

1. 基本原理 OPTICS&#xff08;Ordering Points To Identify the Clustering Structure&#xff09;是一種基于密度的聚類算法&#xff0c;可視為DBSCAN的改進版本。它能夠識別不同密度的簇&#xff0c;并自動發現數據中的層次化聚類結構&#xff0c;適用于復雜分布的數據集…

PyCharm 在 Linux 上的完整安裝與使用指南

PyCharm 在 Linux 上的完整安裝與使用指南—目錄 一、PyCharm 簡介二、下載與安裝1. 下載 PyCharm2. 安裝前的依賴準備3. 安裝步驟方法 1&#xff1a;通過 Snap 安裝&#xff08;推薦&#xff09;方法 2&#xff1a;手動安裝&#xff08;從官網下載 .tar.gz 文件&#xff09;方…

【React】路由器 React-Router

安裝路由模式路由組件和屬性 (Link、NavLink、Outlet、Routes、Navigate、element)路由傳參 ( Hook&#xff1a;useParams 、useSearchParams )路由跳轉&#xff08;Hook&#xff1a;useNavigate&#xff09;路由的構建 前端路由指的是一種將瀏覽器URL與特定頁面或視圖關聯起來…

Flowable7.x學習筆記(十)分頁查詢已部署 BPMN XML 流程

前言 上一篇文章我們已經完成了流程的部署功能&#xff0c;那么下一步就是要激活流程了&#xff0c;但是我們要需要明確的指定具體要激活部署后的哪一條流程&#xff0c;所以我們先把已部署的基礎信息以及具體定義信息分頁查詢出來&#xff0c;本文先把基礎代碼生成以及完成分頁…