娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月12日(星期四)

2020年06月12日 | STM32基于固件庫學習筆記(4)(通用定時器)TIM3定時1S中斷

發布者:恬淡歲月 來源: eefocus關鍵字:STM32  固件庫  通用定時器  TIM3  定時  中斷 手機看文章 掃描二維碼
隨時隨地手機看文章

有 TIME1 和 TIME8 等高級定時器,也有 TIME2~TIME5 等通用定時器,還有 TIME6 和TIME7 等基本定時器。


通用定時器:是一個通過可編程預分頻器(PSC)驅動的 16 位自動裝載計數器(CNT)構成;可以用來測量輸入信號的脈沖長度(輸入捕獲)或者產生輸出波形(輸出比較和 PWM)等功能。


STM3 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定時器功能包括:

 1)16 位向上、向下、向上/向下自動裝載計數器(TIMx_CNT)。


 2)16 位可編程(可以實時修改)預分頻器(TIMx_PSC),計數器時鐘頻率的分頻系數為 1~65535 之間的任意數值。


 3)4 個獨立通道(TIMx_CH1~4),這些通道可以用來作為:

  A.輸入捕獲

  B.輸出比較

  C.PWM 生成(邊緣或中間對齊模式)

  D.單脈沖模式輸出


 4)可使用外部信號(TIMx_ETR)控制定時器和定時器互連(可以用 1 個定時器控制另外一個定時器)的同步電路。


 5)如下事件發生時產生中斷/DMA:

  A.更新:計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發)

  B.觸發事件(計數器啟動、停止、初始化或者由內部/外部觸發計數)

  C.輸入捕獲

  D.輸出比較

  E.支持針對定位的增量(正交)編碼器霍爾傳感器電路

  F.觸發輸入作為外部時鐘或者按周期的電流管理


定時器的時鐘來源有 4 個:

  1)內部時鐘(CK_INT)

  2)外部時鐘模式 1:外部輸入腳(TIx)

  3)外部時鐘模式 2:外部觸發輸入(ETR)

  4)內部觸發輸入(ITRx):使用 A 定時器作為 B 定時器的預分頻器(A 為 B 提供時鐘)


使用定時器的一般步驟

注:

 因為本次是使用TIM3,所以所有代碼都是配置TIM3; 

 本次使用到的庫函數有:"stm32f10x_rcc.h"和"stm32f10x_rcc.c"時鐘庫

            "stm32f10x_tim.h"和"stm32f10x_tim.c"定時器庫

            "misc.h"和"miscc"中斷庫

1)TIM3時鐘使能

   TIM3 是掛載在 APB1 之下


  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //時鐘使能


2)復位TIM3

  很多時候都沒寫這一步,不過建議還是寫上。


TIM_DeInit(TIM6);//復位


3)初始化定時器參數 數, 設置 自動重裝值 , 分頻系數 ,計數方式

  主要通過使用定時器庫函數中,定時器初始化函數


voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

//第一個參數是定位到某個定時器上,第二個參數是初始化結構體指針

typedef struct

{

uint16_t TIM_Prescaler;//設置分頻系數

uint16_t TIM_CounterMode;//用來設置計數方式

uint16_t TIM_Period;//設置自動重載計數周期值

uint16_t TIM_ClockDivision;//是用來設置時鐘分頻因子

uint8_t TIM_RepetitionCounter;//重裝載定時的次數,高級定時器才有用的

} TIM_TimeBaseInitTypeDef;


定時器定時時間計算公式

T(一次中斷的時間)= (設置的初值TIMPeriod+1)?(設置的分頻系數TIMPrescaler+1) 時 鐘 頻 率   T(一次中斷的時間)=frac { (設置的初值TIM_Period+1)*(設置的分頻系數TIM_Prescaler+1) }{時 鐘 頻 率}   T(一次中斷的時間)= 時 鐘 頻 率(設置的初值TIMPeriod+1)?(設置的分頻系數TIM Prescaler+1) 

 

時鐘頻率根據TIM_ClockDivision的值來計算,在APB1時鐘線上初始為72MHZ


4)設置 TIM3_DIER 允許更新中斷


void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

  //第一個參數是定位到某個定時器上、第三個就是失能還是使能ENABLE或NABLE

  /*第二個用來指明我們使能的定時器中斷的類型,定時器中斷的類型有很多種,

     包括更新中斷 TIM_IT_Update,觸發中斷 TIM_IT_Trigger,以及輸入捕獲中斷等。*/


5)居然使用中斷,就得初始化線上中斷,設置觸發條件等。


  //系統初始化就為2組

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  //設置 NVIC 中斷分組 2: 2 位搶占優先級, 2 位響應優先級

  

  //中斷優先級 NVIC 設置

  NVIC_InitTypeDef NVIC_ITDef_TIM6;

  NVIC_ITDef_TIM6.NVIC_IRQChannel = TIM6_IRQn; //TIM6 中斷

  NVIC_ITDef_TIM6.NVIC_IRQChannelPreemptionPriority = 0; //先占優先級 0 級

  NVIC_ITDef_TIM6.NVIC_IRQChannelSubPriority = 3; //從優先級 3 級

  NVIC_ITDef_TIM6.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道被使能

  NVIC_Init(&NVIC_ITDef_TIM6); //初始化 NVIC 寄存器



6)許允許TIM3工作能 ,也就是使能TIM3 。

  也就相當于開定時器。


void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

//第一個參數是定位到某個定時器上、第二個就是失能還是使能ENABLE或NABLE


7 )編寫中斷服務函數。


先看看獲取中斷標志位函數

//先判斷這種中斷是否使能,再判斷標志位

 ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t);

  //直接判斷標志位

 FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

 //主要有這幾個中斷標志位

 #define TIM_IT_Update/*TIM中斷源*/  

 #define TIM_IT_CC1/*TIM捕獲/比較1中斷源*/

 #define TIM_IT_CC2/*TIM捕獲/比較2中斷源*/

 #define TIM_IT_CC3/*TIM捕獲/比較3中斷源*/

 #define TIM_IT_CC4/*TIM捕獲/比較4中斷源*/

 #define TIM_IT_Trigger/*TIM觸發中斷源*/ 

//判斷定時器溢出中斷方法:

 if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){}


清楚標志位函數

void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);


注:使用的TIM_GetITStatus()函數判斷標志位,就用TIM_ClearITPendingBit()函數清標志位。


定時器中斷函數格式

//定時器 3 中斷服務程序

//TIM3_IRQHandler在“USART1_IRQHandler”固件庫給好了的名字

void TIM3_IRQHandler(void) //TIM3 中斷

{

  if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //檢查 TIM3 更新中斷發生與否

  {

    

    TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除 TIM3 更新中斷標志 

  }

}


完整程序

/*

 主要實現LED間隔1s閃爍,其時間用定時器定時中斷完成

*/

#include "stm32f10x.h"                  // Device header

//初始化LED燈 -> PB5推挽輸出、高電平

void LED_Init_PB5(void)

{

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

  GPIO_InitTypeDef GPIO_ITDef_PB5;

  GPIO_ITDef_PB5.GPIO_Pin = GPIO_Pin_5;

  GPIO_ITDef_PB5.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出  

  GPIO_ITDef_PB5.GPIO_Speed = GPIO_Speed_2MHz;  

  GPIO_Init(GPIOB,&GPIO_ITDef_PB5);

  GPIO_SetBits(GPIOB,GPIO_Pin_5);// 置為高電平

}

void TIM6_Init(void)

{

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//掛載tim6時鐘

  TIM_DeInit(TIM6);//復位  

  TIM_TimeBaseInitTypeDef TIM_TITDef_TIM6;

  TIM_TITDef_TIM6.TIM_Prescaler = 7199;//72MHz

  TIM_TITDef_TIM6.TIM_Period = 9999;// 1S

  TIM_TITDef_TIM6.TIM_CounterMode = TIM_CounterMode_Up;//向上計數

  TIM_TITDef_TIM6.TIM_ClockDivision = TIM_CKD_DIV1;//自動重載計數周期值

  TIM_TimeBaseInit(TIM6,&TIM_TITDef_TIM6);

  

  TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);//更新中斷

  

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置 NVIC 中斷分組 2:2 位搶占優先級,2 位響應優先級

 

  //中斷優先級 NVIC 設置

  NVIC_InitTypeDef NVIC_ITDef_TIM6;

  NVIC_ITDef_TIM6.NVIC_IRQChannel = TIM6_IRQn; //TIM6 中斷

  NVIC_ITDef_TIM6.NVIC_IRQChannelPreemptionPriority = 0; //先占優先級 0 級

  NVIC_ITDef_TIM6.NVIC_IRQChannelSubPriority = 3; //從優先級 3 級

  NVIC_ITDef_TIM6.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道被使能

  NVIC_Init(&NVIC_ITDef_TIM6); //初始化 NVIC 寄存器


  TIM_Cmd(TIM6,ENABLE);//使能 TIM6

}

void TIM6_IRQHandler(void) //TIM6 中斷

{

  if (TIM_GetITStatus(TIM6,TIM_IT_Update) != RESET) //檢查 TIM6 更新中斷發生與否

  {

    if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5))//讀取PB5當前狀態

    {       

        GPIO_ResetBits(GPIOB,GPIO_Pin_5);// 置0

    }else {

       GPIO_SetBits(GPIOB,GPIO_Pin_5);// 置1

    }

    TIM_ClearITPendingBit(TIM6,TIM_IT_Update ); //清除 TIM6 更新中斷標志

  }

}

int main(void)

{

  LED_Init_PB5();

  TIM6_Init();//1s

  while(1)

  {

   ;   

  }     

}

關鍵字:STM32  固件庫  通用定時器  TIM3  定時  中斷 引用地址:STM32基于固件庫學習筆記(4)(通用定時器)TIM3定時1S中斷

上一篇:STM32基于固件庫學習筆記(10)窗口看門狗
下一篇:STM32基于固件庫學習筆記(13)ADC讀取電壓值

推薦閱讀

在整個機器人產業中,近幾年來,在智能推進、政策引導下,服務機器人的比重越來越大。若要再細化一點,從市面上的情況來看,面向孩童的機器人成為了這一兩年來的重要方向之一。就在今天(6月12日),一款面向孩童、名為“小丹”的機器人即將上線小米有品進行眾籌。圖 | 釹媧創造創始人兼CEO郭柳宗用機器人代替父母,這是他創業的初衷“我想打造一款機器...
中美貿易戰持續緊張,市場預期電源管理IC廠昂寶將受惠華為加強對非歐美廠商采購零組件,不過,總經理陳志梁今(11)日于股東會上反駁,認為華為受打壓對昂寶不見得有利。陳志梁分析,華為過去要求質量、不在乎價格,僅將昂寶與歐美廠列作合作供應商;如今在禁令下需要排除歐美合作伙伴,加上面臨營運壓力,開始將過去40分、60分水平的廠商納入供應商行列,...
根據韓媒 Shinailbo、Imaeil 報道,龜尾產業園內的 LG 集團產業公司相繼開始將產線轉移至海外或首都圈,而大企業的產線遷移會帶動整體產業鏈遷徙,對此當地社會就業機遇減少導致怨聲道載。龜尾經實聯在 8 日的聲明中表示:LG 電子決定將龜尾電視生產線搬遷至印度尼西亞后,LGD 也開始進行龜尾 2、3 工廠的售賣協商。認為 LG 集團正逐漸脫離龜尾...
據外媒報道,為了更好地實現電動化未來,當地時間6月10日,先進電池材料公司NanoGraf表示,已經生產出全球能量密度最高的18650圓柱形鋰離子電池,與由傳統電池化學成分制成的電池相比,運行時間可延長28%。 NanoGraf電池(圖片來源:NanoGraf) 在美國國防部以及其他機構的支持下,NanoGraf的科學家、技術人員兼工程師團隊發布了一款硅陽極電池,能量密度...

史海拾趣

問答坊 | AI 解惑

渣打銀行個人無抵押無擔保貸款

渣打銀行個人無抵押無擔保貸款 貸款額度:8000--20萬 貸款期限:6個月-- 4年 貸款要求: 1、22-60周歲 2、在上海工作,現單位工作3個月以上. 3、稅前月薪收入3000以上(銀行代發工資). 所需資料: 1. 身份證 2. 收入證明: 銀行工資流水單和 ...…

查看全部問答∨

變頻器停車咋整?

對于55KW及以上的風機,無制動電阻的情況下,變頻器的停車方式,有何不同,自由停車與正常停車,均可以正常運行嗎,自由停車是否對變頻器本身有損壞?…

查看全部問答∨

請教大家,如何在IAR下用JLINK調試STM32。

開發環境:IAR4.42+JLINK V6(全功能)+EK-STM32F。請問:1.在JLINK調試方式下、在JTAG接口下,在FLASH中可以設置幾個斷點?2.在JLINK調試方式下、在SWD接口下,在FLASH中可以設置幾個斷點?3.能用RDI方式調試STM32嗎?如果能,請問可以 ...…

查看全部問答∨

【MSP430共享】氣壓與心電相關數據采集系統的設計

設計了一種氣壓與心電同步數據采集系統. 利用該系統對氣壓和心電信號進行長時間同步采集, 揭示了氣壓變化與心電信粵之間的對應關系. 為滿足系統低功耗的需要, 通過對MS P 4 3 0 F 1 4 9 以及外圍電路的分析, 分別給出軟硬件解決方法; 另一方 ...…

查看全部問答∨

基于FPGA技術的RFID系統的解碼模塊設計

 RFID技術(radiofrequencyidentification)是一種非接觸式智能識別技術,它通過射頻信號自動識別目標對象并獲得相關信息。整個識別過程無需人工介入,可同時識別多個對象并可以識別高速運動的物體,操作簡單,廣泛應用在車輛自動識別系統、物流管理 ...…

查看全部問答∨

無刷電機入門者的福音--STM8S 無刷電機控制器 DEMO 開源(轉)

硬件是 一個PCB 是功率板,可以用來做 hall 和SENSORLESS的,sensorLESS 工作在比較器模式下。當然也可以做HALL 模式下的FOC算法。 MCU板就是一個最小系統板。兩個模擬電位計,兩個直撥開關。還有一個電源開關。 圖片是一個做的風扇,實際測量20W ...…

查看全部問答∨

【跟TI學電源】系列-----TI標準模擬線性器件指南

     德州儀器 (TI) 推出的電源管理產品持續不斷地提供面向便攜式及交流電源供電型設計的優化電源解決方案。傳統應用包括用于計算、電信和網絡系統、數字電視、機頂盒、視頻監控系統及消費電子產品(例如:智能手機、平板電腦 ...…

查看全部問答∨

SCI 怎么接收數據。。。急!!!!!!

各位大神,我是新手,請教SCI 怎么接收數據?用串口調試助手發個數,板子怎么接收,有接收子程序嗎?…

查看全部問答∨

幫看看我這個老式機械電度表

這個哪邊是進哪邊是出呀?火線零線怎么區分的呀 這個電度表最小電流大概多少就不轉沒反應了? 這個電表3(6)A是什么意思?到底是3還是6?本來我想著串在我家里總開關上看看小區的計費和這個有沒有誤差,看來是不是功率太小?廚房有微波爐電 ...…

查看全部問答∨

2812運行異常help

2812在調試過程中 發現,隨著代碼的增加 燒寫進入FLASH出現上電不允運行的現像。一旦退回到上一個版本的代碼 運行即恢復正常。現在可以肯定硬件沒有問題。經過反復的試驗,發現在工程中的一個C文件里增加定義了一個全局變量后燒寫進Flash就出現復位 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 华坪县| 卫辉市| 仙桃市| 永仁县| 靖江市| 望都县| 鲁甸县| 平昌县| 桃园县| 高邑县| 调兵山市| 龙海市| 阿鲁科尔沁旗| 张家口市| 阿鲁科尔沁旗| 桐乡市| 和平县| 额尔古纳市| 大石桥市| 辉县市| 长沙县| 玛曲县| 通河县| 监利县| 宽甸| 临汾市| 日土县| 平湖市| 曲沃县| 库车县| 巴彦县| 琼中| 宾阳县| 抚远县| 伊金霍洛旗| 铜鼓县| 阳春市| 九台市| 阿拉善右旗| 襄樊市| 台北县|