STM32 配置TIM定時中斷常用庫函數

單片機學習!


目錄

?編輯

1. 函數TIM_DeInit

2. 函數TIM_TimeBaseInit?配置時基單元

3. 函數TIM_TimeBaseStructInit

4. 函數TIM_Cmd 運行控制

5. 函數TIM_ITConfig?中斷輸出控制

6.?時基單元的時鐘選擇函數

6.1 函數TIM_InternalClockConfig

6.2 函數?TIM_ITRxExternalClockConfig

6.3 函數?TIM_TIxExternalClockConfig

6.4 函數?TIM_ETRClockMode1Config

6.5 函數?TIM_ETRClockMode2Config

6.6 函數?TIM_ETRConfig

7.單獨更改參數的函數

7.1 函數?TIM_PrescalerConfig

7.2 函數?TIM_CounterModeConfig

7.3 函數?TIM_ARRPreloadConfig

7.4 函數?TIM_SetCounter

7.5 函數?TIM_SetAutoreload

8.函數?TIM_GetCounter

9.函數?TIM_GetPrescaler

10.用來獲取標志位和清除標志位的函數

10.1 函數?TIM_GetFlagStatus

10.2 函數?TIM_ClearFlag

10.3 函數?TIM_GetITStatus

10.4 函數?TIM_ClearITPendingBit


1. 函數TIM_DeInit

? ? ? ? 函數用于恢復缺省配置。

2. 函數TIM_TimeBaseInit?配置時基單元

????????函數用于時基單元初始化。

兩個參數:

  1. TIMx選擇某個定時器。
  2. 結構體,里面包含了配置時基單元的一些參數。

????????TIM_Period 設置了在下一個更新事件裝入活動的自動重裝載寄存器周期的值。它的取值必須在 0x0000 和 0xFFFF 之間。

????????TIM_Prescaler 設置了用來作為 TIMx 時鐘頻率除數的預分頻值。它的取值必須在 0x0000 0xFFFF 之間。

????????TIM_ClockDivision 設置了時鐘分割。該參數取值見下表。

????????TIM_CounterMode 選擇了計數器模式。該參數取值見下表。

代碼示例:

	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision= TIM_CKD_DIV1;//指定時鐘分頻TIM_TimeBaseInitStructure.TIM_CounterMode= TIM_CounterMode_Up;//計數器模式TIM_TimeBaseInitStructure.TIM_Period= 10000-1;//ARR自動重裝器的值,決定定時時間TIM_TimeBaseInitStructure.TIM_Prescaler= 7200-1;//PSC預分頻器的值,決定定時時間,TIM_TimeBaseInitStructure.TIM_RepetitionCounter= 0;//重復計數器的值。TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);

????????定時時間可用計數器溢出頻率公式計算,定時頻率=72M/(PSC+1)/(ARR+1)

對應圖中配置時基單元的部分:

3. 函數TIM_TimeBaseStructInit

? ? ? ? 函數把結構體變量賦一個默認值。

? ? ? ? 下表給出了TIM_TimeBaseInitStruct各個成員的缺省值:

4. 函數TIM_Cmd 運行控制

? ? ? ? 函數用于使能計數器。

兩個參數:

  1. TIMx選擇某個定時器。
  2. NewState新的狀態,也就是使能還是失能,使能計數器可以運行;失能計數器不運行。

對應圖中運行控制的位置:

代碼示例:

	TIM_Cmd(TIM2,ENABLE);	

5. 函數TIM_ITConfig?中斷輸出控制

? ? ? ? 函數用于使能中斷輸出信號。

三個參數:

  1. TIMx選擇某個定時器。
  2. TIM_IT選擇要配置哪個中斷輸出。
  3. NewState新的狀態,使能還是失能。

????????輸入參數 TIM_IT 使能或者失能 TIM 的中斷。可以取下表的一個或者多個取值的組合作為該參數的值。

對應圖中中斷輸出控制的位置,用于使能外設的中斷輸出。

代碼示例:

	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

6.?時基單元的時鐘選擇函數

????????可以選擇RCC內部時鐘、ETR外部時鐘、ITRx其他定時器、TIx捕獲通道。

對應圖中時基單元的時鐘選擇部分

6.1 函數TIM_InternalClockConfig

? ? ? ? 函數用于選擇內部時鐘,參數只有一個TIMx。

對應圖中選擇:

代碼示例:

TIM_InternalClockConfig(TIM2);

6.2 函數?TIM_ITRxExternalClockConfig

? ? ? ? 函數用于選擇ITRx其他定時器的時鐘。

兩個參數:

  1. TIMx,選擇要配置的定時器。
  2. TIM_InputTriggerSource,選擇要接入哪個其他定時器。

????????TIM_InputTriggerSource 選擇 TIM 輸入觸發。

對應圖中選擇:

6.3 函數?TIM_TIxExternalClockConfig

? ? ? ? 函數用于選擇TIx捕獲通道的時鐘。

四個參數:

  1. TIMx,選擇要配置的定時器。
  2. TIM_TIxExternalCLKSource選擇TIx具體的某個引腳。
  3. TIM_ICPolarity,輸入的極性。
  4. ICFilter,輸入濾波器。

????????對于外部引腳的波形,一般都會有極性選擇和濾波器,這樣更靈活一些

????????TIM_TIxExternalCLKSource選擇TIMx外部時鐘源。

對應圖中選擇:

6.4 函數?TIM_ETRClockMode1Config

? ? ? ? 函數用于選擇ETR通過外部時鐘模式1輸入的時鐘。

四個參數:

  1. TIMx,選擇要配置的定時器。
  2. TIM_ExtTRGPrescaler外部觸發預分頻器,這里可以對ETR的外部時鐘再提前做一個分頻。
  3. TIM_ExtTRGPolarity,輸入的極性。
  4. ExtTRGFilter,輸入濾波器。

????????TIM_ExtTRGPrescaler設置TIMx外部觸發預分頻。

????????TIM_ExtTRGPolarity設置TIMx外部觸發極性。

對應圖中選擇:

6.5 函數?TIM_ETRClockMode2Config

????????函數用于選擇ETR通過外部時鐘模式2輸入的時鐘。

  1. TIMx,選擇要配置的定時器。
  2. TIM_ExtTRGPrescaler外部觸發預分頻器,這里可以對ETR的外部時鐘再提前做一個分頻。
  3. TIM_ExtTRGPolarity,輸入的極性。
  4. ExtTRGFilter,輸入濾波器。

對應圖中選擇:


總結:

????????對于ETR輸入的外部時鐘而言,函數?TIM_ETRClockMode1Config和函數TIM_ETRClockMode2Config是等效的,函數參數也是一樣的,如果不需要觸發輸入的功能,那兩個函數可以互換。


6.6 函數?TIM_ETRConfig

? ? ? ? 函數用來單獨用來配置ETR引腳的預分頻器、極性、濾波器這些參數的。

7.單獨更改參數的函數

????????在初始化結構體里有很多關鍵的參數,如自動重裝器的目標值和預分頻值等,這些參數可能會在初始化之后還需要更改,以下函數可以方便更改這些關鍵參數。

7.1 函數?TIM_PrescalerConfig

? ? ? ? 函數用來單獨寫預分頻值。

兩個參數:

  1. Prescaler就是要寫入的預分頻值。
  2. TIM_PSCReloadMode寫入的模式。

????????預分頻器有一個緩沖器,寫入的值是在更新事件發生后才有效的。所以這里有個寫入模式,可以選擇是聽從安排在更新事件生效,或者是再寫入后手動產生一個更新事件,讓這個值立刻生效。

????????TIM_PSCReloadMode選擇預分頻重載模式。

7.2 函數?TIM_CounterModeConfig

? ? ? ? 函數用來改變計數器的計數模式。

兩個參數:

  1. TIMx,選擇要配置的定時器。
  2. TIM_CounterMode,選擇新的計數器模式。

7.3 函數?TIM_ARRPreloadConfig

????????自動重裝寄存器預裝功能配置。計數器的預裝功能可以根據需要選擇配置,調用這個函數,參數選擇使能還是失能來控制計數器預裝功能。

7.4 函數?TIM_SetCounter

????????給計數器寫入一個值,調用這個函數可以手動給一個計數值。

7.5 函數?TIM_SetAutoreload

????????給自動重裝寄存器寫入一個目標值,調用這個函數可以手動給一個目標值。

8.函數?TIM_GetCounter

????????獲取當前計數器的值,調用這個函數可以查看當前計數器記到哪里了,返回值就是當前計數器的值。

9.函數?TIM_GetPrescaler

????????獲取當前預分頻器的值,調用這個函數可以查看預分頻值。

10.用來獲取標志位和清除標志位的函數

10.1 函數?TIM_GetFlagStatus

????????TIM_FLAG 待檢查的標志位,下表給出了所有可以被函數TIM_ GetFlagStatus檢查的標志位列表。

10.2 函數?TIM_ClearFlag

10.3 函數?TIM_GetITStatus

10.4 函數?TIM_ClearITPendingBit

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

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

相關文章

Configuring environment||ROS2環境配置

Goal: This tutorial will show you how to prepare your ROS 2 environment. Tutorial level: Beginner Time: 5 minutes ROS 2 relies on the notion (concept)of combining workspaces using the shell environment. “Workspace” is a ROS term …

C++進階篇8---智能指針

一、引言 為什么需要智能指針? 在上一篇異常中,關于內存釋放,我們提到過一個問題---當我們申請資源之后,由于異常的執行,代碼可能直接跳過資源的釋放語句到達catch,從而造成內存的泄露,對于這種…

C# Winform 日志系統

目錄 一、效果 1.刷新日志效果 2.單獨日志的分類 3.保存日志的樣式 二、概述 三、日志系統API 1.字段 Debug.IsScrolling Debug.Version Debug.LogMaxLen Debug.LogTitle Debug.IsConsoleShowLog 2.方法 Debug.Log(string) Debug.Log(string, params object[]) …

數據結構之內部排序

目錄 7-1 直接插入排序 輸入格式: 輸出格式: 輸入樣例: 輸出樣例: 7-2 尋找大富翁 輸入格式: 輸出格式: 輸入樣例: 輸出樣例: 7-3 PAT排名匯總 輸入格式: 輸出格式: 輸入樣例: 輸出樣例: 7-4 點贊狂魔 輸入格式: 輸出格式: 輸入樣例&a…

RabbitMQ在國內為什么沒有那么流行?

MQ(消息隊列)的世界。MQ,就像是一個巨大的郵局,負責在不同服務或應用間傳遞消息。它可以幫助我們解耦系統,提高性能,還能做到異步處理和流量削峰。 基本使用 RabbitMQ是一個開源的消息代理和隊列服務器&a…

spring boot + uniapp 微信公眾號 jsapi 支付

后端支付類 package com.ruoyi.coupon.payment;import com.google.gson.Gson; import com.ruoyi.coupon.payment.dto.PayParamJsapiDto; import com.ruoyi.coupon.payment.dto.RefundParam; import com.ruoyi.coupon.service.ICouponConfigService; import com.wechat.pay.jav…

FFmpeg抽取視頻h264數據重定向

根據視頻重定向技術解析中的 截獲解碼視頻流的思路,首先需要解決如何輸出視頻碼流的問題。 目前只針對h264碼流進行獲取,步驟如下: 打開mp4文件并創建一個空文件用于存儲H264數據 提取一路視頻流資源 循環讀取流中所有的包(AVPacket),為…

redis中使用pipeline批量處理請求提升系統性能

在操作數據庫時,為了加快程序的執行速度,在新增或更新數據時,可以通過批量提交的方式來減少應用和數據庫間的傳輸次數;在redis中也有這樣的技術實現批量處理,也就是管道——Pipeline。它也是通過批量提交數據的方式來實…

線程安全3--wait和notify

文章目錄 wait and notify(等待通知機制notify補充 wait and notify(等待通知機制 引入wait notify就是為了能夠從應用層面上,干預到多個不同線程代碼的執行順序,這里說的干預,不是影響系統的線程調度策略&#xff08…

uni-app應用設置 可以根據手機屏幕旋轉進行 (橫/豎) 屏切換

首先 我們打開項目的 manifest.json 在左側導航欄中找到 源碼視圖 然后找到 app-plus 配置 在下面加上 "orientation": [//豎屏正方向"portrait-primary",//豎屏反方向"portrait-secondary",//橫屏正方向"landscape-primary",//橫屏…

第57天:django學習(六)

模版之過濾器 語法: {{obj|filter__name:param}} 變量名字|過濾器名稱:變量 default 如果一個變量是false或者為空,使用給定的默認值。否則,使用變量的值。例如: {{ value|default:"nothing"}} length …

IDEA啟動應用時報錯:錯誤: 找不到或無法加載主類 @C:\Users\xxx\AppData\Local\Temp\idea_arg_filexxx

IDEA啟動應用時報錯,詳細錯誤消息如下: C:\devel\jdk1.8.0_201\bin\java.exe -agentlib:jdwptransportdt_socket,address127.0.0.1:65267,suspendy,servern -XX:TieredStopAtLevel1 -noverify -Dspring.output.ansi.enabledalways -Dcom.sun.management…

基于以太坊的智能合約開發Solidity(事件日志篇)

//聲明版本號(程序中的版本號要和編譯器版本號一致) pragma solidity ^0.5.17; //合約 contract EventTest {//狀態變量uint public Variable;//構造函數constructor() public{Variable 100;}event ValueChanged(uint newValue); //事件聲明event Log(…

ElasticSearch之cat plugins API

命令樣例如下: curl -X GET "https://localhost:9200/_cat/plugins?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下: name component version…

class064 Dijkstra算法、分層圖最短路【算法】

class064 Dijkstra算法、分層圖最短路【算法】 算法講解064【必備】Dijkstra算法、分層圖最短路 code1 743. 網絡延遲時間 // Dijkstra算法模版(Leetcode) // 網絡延遲時間 // 有 n 個網絡節點,標記為 1 到 n // 給你一個列表 times&…

法律服務網站建設效果如何

律師事務所及法律知識咨詢機構等往往是眾多人群需求的服務,服務多樣化及內容多元化,市場中也有大量品牌,在實際消費服務中大多以本地事務所為主,而線上咨詢服務則一般沒有區域限制,同行增多及人們知識獲取渠道增加&…

C++-引用和指針區別

文章目錄 1.變量的組成2.指針2.1 定義2.2 使用指針操作變量2.3 為什么使用指針 3.引用3.1 定義3.2 引用注意事項 4.引用和指針的區別 1.變量的組成 變量的組成:變量地址,變量名,變量值 例: int i 12;2.指針 2.1 定義 指針用于存…

如何為游戲角色3D模型設置紋理貼圖

在線工具推薦: 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時,有幾種不同的風格&#xf…

Mybatis中的查詢操作

單表查詢 單表查詢在《初始Mybatis》中已經介紹過&#xff0c;這里就不在介紹了。咱們這里只說單表查詢中的“like查詢”。like查詢單獨使用#{}報錯 <select id"selectByKeyword" resultType"com.example.demo.entity.Userinfo">select * from use…

計網Lesson8 - NAT技術與鏈路層概述

文章目錄 NAT 技術1. 因特網的接入方式2. 公網和私網3. NAT 技術 鏈路層1. 數據鏈路層概述2. 數據鏈路層的三個問題2.1 封裝成幀2.2 透明傳輸2.3 差錯檢測 NAT 技術 1. 因特網的接入方式 光貓將電信號轉換為數字信號發送給路由器 光纖入戶 光纖傳遞的就是數字信號&#xff0c…