TIM_ITConfig() 和 TIM_Cmd()

在STM32的定時器中斷配置中,TIM_ITConfig()?和?TIM_Cmd()?是兩個關鍵函數,它們分別控制中斷使能定時器計數器的啟停,作用層級不同。以下是詳細解釋:

1.?TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE)

作用
  • 啟用定時器的特定中斷源(這里是更新中斷?TIM_IT_Update)。

  • 該函數操作的是定時器的?中斷使能寄存器?TIMx_DIER(DMA/Interrupt Enable Register)。

底層操作
TIMx->DIER |= TIM_IT_Update;  // 置位DIER的UIE位(Update Interrupt Enable)
  • TIM_IT_Update?對應?TIMx_DIER.UIE?位(Update Interrupt Enable)。

  • 當?UIE=1?時,若?TIMx_SR.UIF=1(更新標志位),則定時器會向?NVIC(嵌套向量中斷控制器)發送中斷請求。

中斷流程中的位置
  • 配置階段:在初始化時調用,告訴定時器“允許更新事件觸發中斷”。

  • 硬件行為
    當?CNT == ARR?時,硬件置?UIF=1?→ 若?UIE=1,則觸發中斷;若?UIE=0,即使?UIF=1?也不會中斷。

?2.?TIM_Cmd(TIM2, ENABLE)

作用
  • 啟動或停止定時器的計數器CNT?寄存器的計數)。

  • 該函數操作的是定時器的?控制寄存器?TIMx_CR1(Control Register 1)

底層操作

TIMx->CR1 |= TIM_CR1_CEN;  // 置位CR1的CEN位(Counter Enable)
  • CEN=1:啟動計數器,CNT?開始根據時鐘頻率遞增/遞減。

  • CEN=0:停止計數器,CNT?凍結在當前值。

中斷流程中的位置
  • 定時器的工作開關

    • 即使中斷已使能(UIE=1),若?CEN=0(定時器未啟動),CNT?不會變化,永遠不會觸發?UIF=1,因此也不會中斷。

    • 只有?CEN=1?時,定時器才開始計數,并在?CNT == ARR?時觸發中斷

3. 兩者在中斷流程中的分工

完整中斷觸發條件

定時器中斷的觸發需要同時滿足以下條件

  1. 定時器運行TIMx_CR1.CEN = 1(由?TIM_Cmd(ENABLE)?設置)。

  2. 中斷使能TIMx_DIER.UIE = 1(由?TIM_ITConfig(ENABLE)?設置)。

  3. 事件發生:硬件檢測到?CNT == ARR,置?TIMx_SR.UIF = 1

?

Q1:為什么需要分開兩個函數?
  • 解耦控制

  • TIM_ITConfig()?管是否允許中斷(邏輯控制)。

  • TIM_Cmd()?管是否啟動定時器(物理控制)。
    例如:你可能需要定時器運行(CEN=1)但不觸發中斷(UIE=0),用于PWM生成。

?

Q2:調用順序有要求嗎?
  • 推薦順序

    1. 先配置中斷(TIM_ITConfig)。

    2. 再啟動定時器(TIM_Cmd)。

    • 原因:避免定時器啟動后立即觸發中斷,但中斷尚未配置完成。

Q3:如果只調用其中一個函數會怎樣?
情況結果
僅?TIM_ITConfig(ENABLE)定時器不計數(CEN=0),無中斷觸發。
僅?TIM_Cmd(ENABLE)定時器計數,UIF?會置位,但中斷未使能(UIE=0),不會進入中斷服務程序。

?

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

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

相關文章

TensorFlow 實現 Mixture Density Network (MDN) 的完整說明

本文檔詳細解釋了一段使用 TensorFlow 構建和訓練混合密度網絡(Mixture Density Network, MDN)的代碼,涵蓋數據生成、模型構建、自定義損失函數與預測可視化等各個環節。 1. 導入庫與設置超參數 import numpy as np import tensorflow as t…

數據結構實驗7.2:二叉樹的基本運算

文章目錄 一,實驗目的二,問題描述三,基本要求四,實驗操作五,示例代碼六,運行效果 一,實驗目的 深入理解樹與二叉樹的基本概念,包括節點、度、層次、深度等,清晰區分二叉…

直線軸承常規分類知多少?

直線軸承的分類方式多樣,以下是從材質、結構形狀和常規系列三個維度進行的具體分類: 按主要材質分類 外殼材質:常見的有不銹鋼,具有良好的耐腐蝕性,適用于一些對環境要求較高、易受腐蝕的工作場景;軸承…

websocket和SSE學習記錄

websocket學習記錄 websocket使用場景 即時聊天在線文檔協同編輯實施地圖位置 從開發角度來學習websocket開發 即使通信項目 通過node建立簡單的后端接口,利用fs, path, express app.get(*, (req, res) > {const assetsType req.url.split(/)[…

CUDA編程中影響性能的小細節總結

一、內存訪問優化 合并內存訪問:確保相鄰線程訪問連續內存地址(全局內存對齊訪問)。優先使用共享內存(Shared Memory)減少全局內存訪問。避免共享內存的Bank Conflict(例如,使用padding或調整訪…

【雙指針】對撞指針 快慢指針 移動零

文章目錄 雙指針介紹對撞指針快慢指針283. 移動零解題思路算法思路算法流程雙指針介紹 ? 算法中的雙指針,并不一定是指我們平常在 c/c++ 使用的指針類型,更多時候其實是數組的下標等,因為它們也是有標識某個元素的功能,通常我們也就順其自然地稱其為 “指針” ! ? 常見…

數據結構0基礎學習堆

文章目錄 簡介公式建立堆函數解釋 堆排序O(n logn)topk問題 簡介 堆是一種重要的數據結構,是一種完全二叉樹,(二叉樹的內容后面會出), 堆分為大小堆,大堆,左右結點都小于根節點,&am…

4.17--4.19刷題記錄(貪心)

第一部分:準備工作 代碼隨想錄中解釋為:貪心的本質是選擇每一階段的局部最優,從而達到全局最優。 而我的理解為:貪心實質上是具有最優子結構的一種算法。所有的解都能由當前最優的解組成。 第二部分:開始刷題 &…

學習筆記十七——Rust 支持面向對象編程嗎?

🧠 Rust 支持面向對象編程嗎? Rust 是一門多范式語言,主要以 安全、并發、函數式、系統級編程為核心目標,但它同時也支持面向對象的一些關鍵特性,比如: 特性傳統 OOP(如 Java/C)Ru…

【Linux】43.網絡基礎(2.5)

文章目錄 2.4 TCP/UDP對比2.4.1 用UDP實現可靠傳輸(經典面試題) 2.5 TCP 相關實驗2.5.1 理解 listen 的第二個參數 2.4 TCP/UDP對比 我們說了TCP是可靠連接, 那么是不是TCP一定就優于UDP呢? TCP和UDP之間的優點和缺點, 不能簡單, 絕對的進行比較TCP用于可靠傳輸的情況, 應用于…

three.js與webgl在buffer上的對應關系

一、three.js的類名 最近開始接觸three.js 看到three.js中的一些類名和webgl的很相似 不自覺的就想對比一下 二、three.js中繪制4個點 // 創建點的幾何體 const vertices new Float32Array([0.0, 0.0, 0.0, // 點11.0, 0.0, 0.0, // 點20.0, 1.0, 0.0, // 點30.…

DataWhale AI春訓營 問題匯總

1.沒用下載訓練集導致出錯,爆錯如下。 這個時候需要去比賽官網下載對應的初賽訓練集 unzip -d /mnt/workspace/sais_third_new_energy_baseline/data /mnt/workspace/sais_third_new_energy_baseline/初賽訓練集.zip 在命令行執行這個命令解壓 2.沒定義測試集 te…

CANFD技術在新能源汽車通信網絡中的應用與可靠性分析

一、引言 新能源汽車產業正處于快速發展階段,其電子系統復雜度不斷攀升,涵蓋眾多傳感器、控制器與執行器。高效通信網絡成為確保新能源汽車安全運行與智能功能實現的核心要素。傳統CAN總線因帶寬限制,難以滿足高級駕駛輔助系統(A…

Python字典深度解析:高效鍵值對數據管理指南

一、字典核心概念解析 1. 字典定義與特征 字典(Dictionary)是Python中??基于哈希表實現??的無序可變容器,通過鍵值對存儲數據,具有以下核心特性: ??鍵值對結構??:{key: value}形式存儲數據??快…

C++中unique_lock和lock_guard區別

目錄 1.自動鎖定與解鎖機制 2.靈活性 3.所有權轉移 4.可與條件變量配合使用 5.性能開銷 在 C 中&#xff0c;std::unique_lock 和 std::lock_guard 都屬于標準庫 <mutex> 中的互斥鎖管理工具&#xff0c;用于簡化互斥鎖的使用并確保線程安全。但它們存在一些顯著區別…

Nvidia顯卡架構演進

1 簡介 顯示卡&#xff08;英語&#xff1a;Display Card&#xff09;簡稱顯卡&#xff0c;也稱圖形卡&#xff08;Graphics Card&#xff09;&#xff0c;是個人電腦上以圖形處理器&#xff08;GPU&#xff09;為核心的擴展卡&#xff0c;用途是提供中央處理器以外的微處理器幫…

下載electron 22.3.27 源碼錯誤集錦

下載步驟同 electron源碼下載及編譯_electron源碼編譯-CSDN博客 問題1 從github 下載 dugite超時&#xff0c;原因沒有找到 Validation failed. Expected 8ea2d0d3c9d9e4615069913207371ffe892dc10fb93975972f2f6e668f2e3b3a but got e3b0c44298fc1c149afbf4c8996fb92427ae41e…

洛谷P1120 小木棍

#算法/進階搜索 思路: 首先,最初始想法,將我們需要枚舉的長木棍個數計算出來,在dfs中,我們先判斷,此時枚舉這根長木棍需要的長度是否為0,如果為0,我們就枚舉下一個根木棍,接著再判斷,此時仍需要枚舉的木棍個數是否為0,如果為0,代表我們這種方案可行,直接打印長木棍長度,接著我們…

Linux教程-常用命令系列二

文章目錄 1. 系統管理常用命令1. useradd - 創建用戶賬戶功能基本用法常用選項示例 2. passwd - 管理用戶密碼功能基本用法常用選項示例 3. kill - 終止進程功能基本用法常用信號示例 4. date - 顯示和設置系統時間功能基本用法常用選項時間格式示例 5. bc - 高精度計算器功能基…

18、TimeDiff論文筆記

TimeDiff **1. 背景與動機****2. 擴散模型基礎****3. TimeDiff 模型****3.1 前向擴散過程****3.2 后向去噪過程** 4、TimeDiff&#xff08;架構&#xff09;原理訓練推理其他關鍵點解釋 DDPM&#xff08;相關數學&#xff09;1、正態分布2、條件概率1. **與多個條件相關**&…