STM32-定時器

?定時器:有4個獨立通道:輸入捕獲;輸出比較PWM生成;單脈沖模式輸出;可通外部信號控制定時器(TIMx-ETR);

?支持針對定時的增量(正交)編碼器、霍爾傳感器電路

通用定時器配置步驟:

  • 使能定時器時鐘

?? ?RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4時鐘

  • 初始化定時器參數
typedef struct
{uint16_t TIM_Prescaler;//指定用于分頻TIM時鐘的預分頻器值//實際分頻值 = 此參數值+1uint16_t TIM_CounterMode; //指定計數器計數模式- TIM_CounterMode_Up: 向上計數模式(從0遞增到ARR)- TIM_CounterMode_Down: 向下計數模式(從ARR遞減到0)- TIM_CounterMode_CenterAligned1: 中心對齊模式1- TIM_CounterMode_CenterAligned2: 中心對齊模式2- TIM_CounterMode_CenterAligned3: 中心對齊模式3 uint16_t TIM_Period;//指定將在下一次更新事件時加載到自動重載寄存器(ARR)的值uint16_t TIM_ClockDivision;  //指定時鐘分頻因子(用于數字濾波器)- TIM_CKD_DIV1: 不分頻(Tclk = TIM時鐘)- TIM_CKD_DIV2: 2分頻(Tclk = TIM時鐘/2)- TIM_CKD_DIV4: 4分頻(Tclk = TIM時鐘/4) */uint8_t TIM_RepetitionCounter;//指定重復計數器值(僅高級定時器TIM1和TIM8支持)} TIM_TimeBaseInitTypeDef;
  • 設置定時器中斷類型,并使能
/*** @brief  使能或禁用TIM定時器的中斷* @param  TIMx: 指向TIM外設的指針,例如TIM1、TIM2等* @param  TIM_IT: 指定要配置的中斷源,可使用邏輯或組合多個中斷源*                 例如: TIM_IT_Update(更新中斷)、TIM_IT_CC1(通道1比較中斷)* @param  NewState: 新狀態,可選擇ENABLE或DISABLE*/
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)
  • 設置定時器中斷優先級使能定時器通道
  • 開啟定時器

void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)

  • 編寫定時器中斷服務函數

void TIM4_IRQHandler(void)【每個不一樣可以去啟動文件查看】

/*** @brief  檢查指定TIM定時器的中斷狀態標志* @param  TIMx: 指向TIM外設的指針,如TIM1、TIM2等* @param  TIM_IT: 指定要檢查的中斷源,可使用邏輯或組合多個中斷源*                 例如: TIM_IT_Update(更新中斷)、TIM_IT_CC1(通道1比較中斷)* @retval ITStatus: 中斷狀態(SET = 中斷發生; RESET = 中斷未發生)*/
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT)
/*** @brief  清除指定TIM定時器的中斷掛起標志* @param  TIMx: 指向TIM外設的指針,如TIM1、TIM2等* @param  TIM_IT: 指定要清除的中斷源,可使用邏輯或組合多個中斷源*                 例如: TIM_IT_Update(更新中斷)、TIM_IT_CC1(通道1比較中斷)* @note   必須在中斷處理完成后調用此函數,否則會持續觸發中斷* @note   通過向TIMx_SR寄存器的對應位寫入0來清除標志* @example TIM_ClearITPendingBit(TIM3, TIM_IT_Update); // 清除TIM3的更新中斷標志*/
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)

代碼實現(500msLED電平翻轉一次)

#include "time.h"
#include "led.h"/*******************************************************************************
* 函 數 名         : TIM4_Init
* 函數功能		   : TIM4初始化函數
* 輸    入         : per:重裝載值psc:分頻系數
* 輸    出         : 無
*******************************************************************************/
void TIM4_Init(u16 per,u16 psc)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4時鐘TIM_TimeBaseInitStructure.TIM_Period=per;   //自動裝載值(設置溢出中斷值)TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //分頻系數TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //設置向上計數模式TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE); //開啟定時器中斷TIM_ClearITPendingBit(TIM4,TIM_IT_Update);NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;//定時器中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優先級NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;		//子優先級NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能NVIC_Init(&NVIC_InitStructure);	TIM_Cmd(TIM4,ENABLE); //使能定時器	}
/*******************************************************************************
* 函 數 名         : TIM4_IRQHandler
* 函數功能		   : TIM4中斷函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void TIM4_IRQHandler(void)
{if(TIM_GetITStatus(TIM4,TIM_IT_Update))//查詢中斷標志位{LED2=!LED2;}TIM_ClearITPendingBit(TIM4,TIM_IT_Update);	//清除標志位
}

主函數代碼

    u8 i;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優先級分組 分2組LED_Init();TIM4_Init(1000,36000-1);  //定時500ms

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

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

相關文章

Windows Server 2019--職業技能大賽B模塊Windows服務器配置樣題

一、賽題說明 (一)競賽介紹 請詳細閱讀網絡拓撲圖,為所有計算機修改默認防火墻以便允許ICMP和相應的流量,不允許直接關閉主機的防火墻。除了CD-ROM/HDD驅動器,請不要修改虛擬機本身的硬件設置。 (二&…

vue3+Echarts實現立體柱狀圖

Echarts柱狀圖中文網:https://echarts.apache.org/examples/zh/index.html#chart-type-bar 效果展示: 主要實現過程是三部分的組合,最上面是一個橢圓,中間是正常的柱子,下方再加上一個橢圓,就出來立體的效…

【UE5】虛幻引擎小百科

一、類名前面的大寫字母的含義是什么UE5常見前綴分類表前綴含義實例用于AActorACharacter,AWeaponBase可放入世界中的對象(有位置、可碰撞等)UUObject派生類UUserWidget,UWeaponComponent引擎對象、邏輯模塊,不具備Tra…

【Linux系統】vim編輯器 | 編譯器gcc/g++ | make/Makefile

1. vim編輯器一、歷史發展與Vim vs Vi的區別起源與演進Vi(1976年) :由Bill Joy開發,嵌入BSD Unix系統,是首個面向屏幕的文本編輯器,但功能有限(如無多級撤銷)。Vim(1991年…

國產飛騰主板,賦能網絡安全防御硬手段

? 當前,網絡安全形勢嚴峻,網絡攻擊手段不斷翻新,從數據泄露到電腦中毒,企業、機構乃至國家的數字資產都面臨著巨大風險。在此背景下,國產硬件技術的突破對筑牢網絡安全防線意義重大。 高能計算機基于市場需求&#…

Spring AI 概述與架構設計

目錄一、前言二、簡介三、核心能力概覽四、理解模塊架構圖五、模型適配能力六、最小應用示例七、與傳統 LLM 調用相比八、總結九、參考一、前言 在 AI 正以前所未有的速度“下沉”到各類系統與業務的當下,Spring 官方推出的 Spring AI 項目,為 Java 開發…

UI前端與數字孿生融合新領域:智慧環保的污染源監測與治理

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言:數字孿生重構智慧環保的技術范式在環境污染治理壓力持續增大的背景下&…

【go/wails】wails入門系列(一)環境安裝與demo

文章目錄說在前面go安裝nodejs安裝wails創建項目運行說在前面 操作系統:win11go版本:1.24.4nodejs版本:v22.16.0wails版本:v2.10.1 go安裝 官網 這里 下載安裝即可 nodejs 官網 這里 下載安裝即可 安裝wails 設置go國內代理g…

linux qt 使用log4cpp庫

一、日志庫下載 下載地址:https://log4cpp.sourceforge.net/二、日志庫解壓,編譯 1.將文件夾解壓出來2.進入文件夾內部,打開終端3.終端中依次輸入以下命令 mkdir build ./configure --prefix$(pwd)/build make make install 一般來說不會報錯…

探索阿里云Data Integration:數據同步的魔法工具

引言在當今數字化時代,數據已成為企業的核心資產,如同企業發展的 “燃料”,驅動著業務的增長與創新。從用戶行為數據到業務運營數據,從市場趨勢數據到供應鏈數據,每一個數據點都蘊含著巨大的價值,能夠為企業…

【Java面試】Redis的poll函數epoll函數區別?

Redis 在選擇 poll 和 epoll 時主要基于性能需求、連接規模、操作系統支持等因素。以下是具體場景的對比與選擇建議:1. 何時使用 poll 函數?適用場景: 跨平臺兼容性需求:poll 在幾乎所有操作系統(如 Windows、BSD、Lin…

RPC--RPCHandler的實現

在RPC框架中,Handler用于接收RpcRequest,經過處理后返回RpcResponseSlf4jpublic class RpcRequestHandler {private final ServiceProvider serviceProvider;//獲取一個單例模式的服務提供類public RpcRequestHandler() {serviceProvider SingletonFact…

C#讀取文件夾和文件列表:全面指南

C#讀取文件夾和文件列表:全面指南 在 C# 開發中,經常需要獲取文件夾中的文件列表或子文件夾結構,例如文件管理器、批量處理工具、備份程序等場景。本文將詳細介紹 C# 中讀取文件夾和文件列表的各種方法,包括基礎操作、遞歸遍歷、過…

從小白到進階:解鎖linux與c語言高級編程知識點嵌入式開發的任督二脈(1)

【硬核揭秘】Linux與C高級編程:從入門到精通,你的全棧之路!第一部分:初識Linux與環境搭建,玩轉軟件包管理——嵌入式開發的第一道“坎”嘿,各位C語言的“卷王”們!你可能已經習慣了在Windows或m…

.net開源庫SignalR

.NET開源庫SignalR:打造實時Web應用的利器 在當今的Web開發領域,實時性已經成為了許多應用的核心需求。無論是實時聊天、實時數據監控還是實時游戲,都需要服務器能夠及時地將數據推送給客戶端。而.NET開源庫SignalR,正是滿足這一…

SQL Server不同場景批量插入數據的方式詳解

INSERT INTO...VALUES多行語法 該方法適用于單次插入少量數據(通常<1000行),語法簡潔直觀。示例: INSERT INTO Employees (EmployeeID, Name, Department) VALUES (101, Zhang San, IT),(102, Li Si, HR),(103, Wang Wu, Finance)優點:語法簡單易理解,適合開發測試環…

Day08-Flask 或 Django 簡介:構建 Web 應用程序

Flask 或 Django 簡介&#xff1a;構建 Web 應用程序 網絡開發領域提供了豐富的工具和框架&#xff0c;而 Python 作為一門多功能的語言&#xff0c;在構建健壯且可擴展的 Web 應用方面脫穎而出。本課程將作為你使用 Python 進行 Web 開發的入門指南&#xff0c;特別聚焦于兩個…

k8s多集群管理中的聯邦和艦隊如何理解?

在 Kubernetes 多集群管理中&#xff0c;聯邦&#xff08;Federation&#xff09;和艦隊&#xff08;Fleet&#xff09;是兩種不同的方法&#xff0c;用于管理和協調多個 Kubernetes 集群。下面是對這兩種方法的詳細解釋&#xff1a; 聯邦&#xff08;Federation&#xff09; K…

Docker部署MySQL鏡像

1.拉取鏡像 # 拉取指定版本的MySQL鏡像 docker pull mysql:8.02.創建掛載目錄 # 自己創建好如下三個文件夾 路徑任意 [rootiZuf6aigs7rxe6f6oifq7vZ mysql]# ll 總用量 12 drwxr-xr-x 2 root root 4096 7月 7 10:25 config drwxr-xr-x 2 root root 4096 6月 26 16:43 data d…

【網絡】Linux 內核優化實戰 - net.ipv4.ip_local_reserved_ports

目錄一、參數作用二、默認值與格式三、典型應用場景四、配置方法五、注意事項六、查看當前配置在Linux系統的TCP/IP網絡配置中&#xff0c;net.ipv4.ip_local_reserved_ports 是一個關鍵內核參數&#xff0c;用于指定禁止系統自動分配的本地端口范圍。這些端口會被“預留”出來…