STM32 CCR寄存器

??1. CCR寄存器在輸入捕獲模式下的特性?

  • ?只讀屬性?:
    當定時器通道配置為輸入捕獲模式(如捕獲上升沿/下降沿)時,CCR寄存器硬件自動變為只讀?。軟件寫入操作無效,只能在捕獲事件發生時由硬件自動更新為當前CNT值。
  • ?硬件自動裝載?:
    當指定的邊沿(如PA8下降沿)觸發捕獲時,硬件自動將當前計數器值(CNT)寫入CCR寄存器,并置位中斷標志位(如TIM_IT_CC1)。

?? ?2. 清零機制:硬件復位CNT計數器?

用戶代碼中通過主從模式實現了間接清零效果:

TIM_SelectInputTrigger(TIM1, TIM_TS_TI1FP1);   // 選擇PA8作為觸發源
TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Reset); // 復位模式:PA8下降沿復位CNT
  • ?工作流程?:
    1. ?PA8下降沿? → 觸發硬件復位信號 → CNT計數器立即清零并重啟計數。
    2. ?CCR1的值?:在中斷中讀取TIM1->CCR1時,實際是復位前CNT的值?(即信號周期)。
    3. ?CCR2的值?:在PA9下降沿觸發時,硬件捕獲當前CNT值?(即PA9與PA8的時間差)。

? ?關鍵點?:CCR寄存器存儲的是捕獲瞬間的CNT值,而CNT的清零由硬件自動完成,與CCR無關。


📥 ?3. 中斷服務中的操作?

在中斷函數中,?只需讀取CCR值并清除中斷標志,無需操作CCR寄存器:

void TIM1_CC_IRQHandler(void) {if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET) {Cycle = TIM1->CCR1;  // 讀取周期值(CNT復位前的值)TIM_ClearITPendingBit(TIM1, TIM_IT_CC1); // 清除中斷標志}if (TIM_GetITStatus(TIM1, TIM_IT_CC2) != RESET) {Phase = TIM1->CCR2;  // 讀取相位差(PA9下降沿時的CNT值)TIM_ClearITPendingBit(TIM1, TIM_IT_CC2); // 清除中斷標志}
}
  • ?中斷標志的作用?:
    僅表示“捕獲事件已發生”,清除后等待下次事件。
  • ?CCR值更新?:
    下一次捕獲事件發生時,硬件自動覆蓋CCR寄存器的值。

?? ?4. 常見誤區與注意事項?

?誤區??正確理解?
手動寫CCR1=0? 輸入捕獲模式下無效,CCR只讀。
CNT復位=CCR清零? CNT清零由硬件完成,CCR存儲的是復位前的值。
不清除中斷標志? 導致中斷持續觸發,CPU被阻塞。

💎 ?總結?

  • ?CCR清零機制?:通過TIM_SlaveMode_Reset在PA8下降沿硬件自動復位CNT,實現計數器的周期性清零。
  • ?CCR寄存器角色?:只讀存儲單元,記錄捕獲瞬間的CNT值(周期或相位差)。
  • ?軟件操作?:僅需在中斷中讀取CCR值 + 清除中斷標志,無需操作CCR寄存器。

🔍 ?驗證方法?:在調試時監控TIM1->CNTTIM1->CCR1,可觀察到PA8下降沿時CNT被清零,而CCR1的值保持不變直至下次捕獲。

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

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

相關文章

【JS-6-ES6中的let和const】深入理解ES6中的let和const:塊級作用域與變量聲明的新范式

在ES6(ECMAScript 2015)之前,JavaScript中只有var一種變量聲明方式,這導致了許多作用域相關的問題。ES6引入了let和const兩種新的變量聲明方式,徹底改變了JavaScript的作用域規則。本文將深入探討let和const的特性、優勢以及它們與var的區別。…

[C語言]數據類型關鍵字詳解

基本數據類型 關鍵字說明存儲大小(通常)取值范圍(通常)示例int聲明整型變量4字節(32位系統)-2,147,483,648 到 2,147,483,647int count 100;char聲明字符型變量1字節-128 到 127 或 0 到 255char grade ‘A’;float聲明單精度浮點數4字節1.2e-38 到 3.4e38 (約6-7位有效數字…

黑馬python(二十二)

目錄: 1.Python操作Mysql基礎使用 2.Python操作Mysql數據插入 3.綜合案例 1.Python操作Mysql基礎使用 2.Python操作Mysql數據插入 3.綜合案例 代碼復用 黑馬python(二十一)章節的的代碼,讀取文件內容

課堂筆記:吳恩達的AI課(AI FOR EVERYONE)-W1 深度學習的非技術性解釋

深度學習的非技術性解釋 (1)示例1:以商場為主買T恤為例,價格和需求的關系怎么樣? 一般來說,價格越高,需求越少 這里輸入A是 價格,輸出B是需求,其中的映射關系是神經元&a…

dlib檢測視頻中的人臉并裁剪為圖片保存

環境要求 找個帶有基本cv配置的虛擬環境安裝上dlib依賴的人臉檢測的基礎環境即可,主要是: pip install boost dlib opencv-python缺的按提示安裝。 demo 設置好視頻路徑和圖像保存路徑,裁剪尺寸(默認256)以及裁剪幀…

真的!ToDesk遠程控制已上線原生鴻蒙系統!

2025年5月,ToDesk遠程控制正式宣布完成對PC鴻蒙系統的適配,成為業界首批原生支持HarmonyOS OS的跨端遠控工具。 作為國內支持上億設備的遠程控制軟件,ToDesk以無縫互聯、快速響應、安全無界為核心,重新定義了跨設備遠程協作的界限…

Java-58 深入淺出 分布式服務 ACID 三階段提交3PC 對比2PC

點一下關注吧!!!非常感謝!!持續更新!!! 🚀 AI篇持續更新中!(長期更新) 目前2025年06月16日更新到: AI煉丹日志-29 - 字節…

matplotlib 繪制餅圖

1、功能介紹: 使用 python 的 matplotlib 庫來創建一個簡單的餅圖。 2、代碼部分: import matplotlib.pyplot as plt# 示例數據 labels [A, B, C, D, E] # 類別標簽 sizes [15, 30, 45, 5, 5] # 每個類別對應的數值(百分比&#xff09…

用Rust寫平衡三進制除法器

1、除法的本質 除法的本質是減法,也就是一個大的數減去一個小的數,比如:10/2,也就是10-2-2-2-2-20,所以商5余0,10/3,也就是10-3-3-31,所以商3余1,這也是很常見的方法,但如…

深入探索WordPress Multisite:構建與管理多站點網絡

隨著互聯網的快速發展,越來越多的企業和個人開始使用內容管理系統來搭建和維護自己的網站。WordPress作為全球最受歡迎的CMS之一,因其強大的功能和靈活性,成為了許多網站管理員的首選平臺。而在一些特定需求的場景下,WordPress Mu…

.Net Core 獲取文件路徑

在 .NET Core 中獲取文件路徑的方法取決于你要獲取的文件的位置和上下文。這里將介紹幾種常見的方式來獲取文件路徑。 1. 獲取當前工作目錄 你可以使用 Directory.GetCurrentDirectory() 方法來獲取當前工作目錄的路徑: using System; using System.IO; class P…

順序表整理和單項鏈表01 day20

二:各個主要函數 一:CreatSeqList SeqList *CreateSeqList(int len); -------------------------------------------------------------/*** brief Create a Seq List object 創建一個順序表** param n 是順序表的大小* return SeqList* 指向順序表的…

電商導購app平臺的緩存策略與性能優化方案:架構師的實踐經驗

電商導購app平臺的緩存策略與性能優化方案:架構師的實踐經驗 大家好,我是阿可,微賺淘客系統及省賺客APP創始人,是個冬天不穿秋褲,天冷也要風度的程序猿! 緩存策略的重要性 在電商導購APP平臺中&#xff…

學習C++、QT---12(C++的繼承、權限對繼承的影響)

每日一言 你的價值,由你自己定義,無需他人評判。 C的繼承 直接上案例 繼承是什么意思呢,就是我本來這個類我叫他基類、我希望創建我的下一個類有我這之前的類的屬性和方法,那么我如果不用繼承的話,就需要多寫很多一樣…

(6)Wireshark的TCP包詳解-上篇

1.簡介 上一篇中通過介紹和講解,應該知道要講解和介紹的內容在哪里了吧,沒錯就是介紹OSI七層模型的傳輸層。因為只有它建立主機端到端的連接如:TCP、UDP。 2.TCP是什么? tcp是工作在傳輸層,也就是網絡層上一層的協議。 它是面…

太極八卦羅盤JS繪制

LeaferJS 是一款好用的 Canvas 引擎,通過LeaferJS繪制羅盤案例. https://www.leaferjs.com/ui/guide/ 示例 太極八卦羅盤 直接上代碼 <template><div id"LuoPan"></div><div id"info"><p>屏幕寬度: {{ screenWidth }}px<…

Python開源項目月排行 2025年5月

#2025年5月2025年6月1日1scrapy一個開源的、基于 Python 的高性能網絡爬蟲和數據抓取框架。Scrapy 項目最初由倫敦的網絡聚合和電子商務公司 Mydeco 的員工以及烏拉圭蒙得維的亞的網絡咨詢公司 Insophia 的開發者共同創建。目前&#xff0c;Scrapy 由 Zyte&#xff08;原名 Scr…

Debezium日常分享系列之:在 Kubernetes 中使用 Debezium 的 CDC

Debezium日常分享系列之&#xff1a;在 Kubernetes 中使用 Debezium 的 CDC 架構源數據庫創建數據庫憑證密鑰Debezium 自定義鏡像構建并推送鏡像Kafka Connect 集群Debezium Postgres 連接器Debezium 創建的 Kafka 主題 Debezium 是一個開源的分布式變更數據捕獲 (CDC) 平臺。D…

tf serving和torch serve哪個耗時更低

TensorFlow Serving&#xff08;TF Serving&#xff09;和 TorchServe 的耗時對比需結合具體場景&#xff08;如硬件配置、模型類型、優化策略等&#xff09;&#xff0c;以下從多維度分析兩者的性能差異及適用場景。 ?? 1. 標準性能基準對比 根據公開壓測數據&#xff08;…

Java面試寶典:基礎六

133. 二進制小數點位移 答案:C(乘以2) 解析: 原理:二進制小數點右移一位等價于乘以 (2^1)(左移則除以 (2))。示例: 101.1(5.5)右移 → 1011(11)驗證:(5.5 \times 2 = 11)說明:位移前:1 0 1 . 1 (值 = 2+2?+2? = 5.5) 位移后:1 0 1 1 . (值 = 2+2+2? =…