国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 定時器詳解

這篇具有很好參考價值的文章主要介紹了STM32 定時器詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

STM32 定時器詳解

吃了一個猛虧,自己理解花了大半天時間,結(jié)果一看代碼發(fā)現(xiàn)巨簡單


算了,把自己理解的放上來吧

目錄

STM32 定時器詳解

前言

一、定時器種類和區(qū)分

二、時鐘源

三、計數(shù)過程

3.1 計數(shù)器時鐘CK_CNT

3.2 計數(shù)器有關(guān)的三個寄存器

3.3 其他的寄存器

3.4 定時器計算時間

總結(jié)



前言

前面說過看門狗以及簡單的延時功能,實際上STm32還有專門用于定時器的配置。定時器配套的功能有很多,比如定時發(fā)送 USART 數(shù)據(jù)、定時采集 AD數(shù)據(jù)等等。如果把定時器與 GPIO 結(jié)合起來使用的話可以實現(xiàn)非常豐富的功能,可以測量輸入信號的脈沖寬度,可以生產(chǎn)輸出波形。定時器生產(chǎn) PWM 控制電機(jī)狀態(tài)是工業(yè)控制普遍方法(STM32第六章-TIM定時器詳解 - 知乎)

為什么要用計時器? 答:延時過程中,CPU時間被占用,無法進(jìn)行其他任務(wù),導(dǎo)致系統(tǒng)效率降低。延時時間越長,該 缺點便越明顯,因此軟件延時只適用于短暫延時,或簡單項目。

這一塊比較復(fù)雜:參考了很多博客( 【STM32】通用定時器的基本原理(實例:定時器中斷)_stm32定時器中斷設(shè)置中斷變量_Yngz_Miao的博客-CSDN博客),最后整理總結(jié)如下:

一、定時器種類和區(qū)分

高級定時器(TIM1、TIM8);通用定時器(TIM2、TIM3、TIM4、TIM5);基本定時器(TIM6、TIM7)。

STM32 定時器詳解

?

即:高級定時器具有捕獲/比較通道和互補(bǔ)輸出,通用定時器只有捕獲/比較通道,基本定時器沒有以上兩者。

使用最多的是高級定時器和通用定時器

主要的區(qū)別見下:

STM32 定時器詳解

?

二、時鐘源

2.1 需要一個時鐘源

定時器要實現(xiàn)計數(shù)必須有個時鐘源,因為他需要一個計時的基礎(chǔ)(很矛盾吧,但是內(nèi)部能夠提供一個最基本的RCC時鐘可以基于此設(shè)計,也可以用外部的)。

基本定時器時鐘只能來自內(nèi)部時鐘,高級控制定時器和通用定時器還可以選擇外部時鐘源或者直接來自其他定時器等待模式。

我們可以通過 RCC 專用時鐘配置寄存器(RCC_DCKCFGR)的 TIMPRE位設(shè)置所有定時器的時鐘頻率,我們一般設(shè)置該位為默認(rèn)值 0,使得表中可選的(通用定時器的時鐘頻率是由APB1的分頻系數(shù)決定,如果APB1的預(yù)分頻系數(shù)是1,則通用定時器的時鐘頻率等于APB1的時鐘頻率(不理解這句話可以看下面的RCC時鐘部分))。

STM32 定時器詳解

基本定時器只能使用內(nèi)部時鐘,當(dāng) TIM6 和 TIM7 控制寄存器 1(TIMx_CR1)的 CEN 位置 1時,啟動基本定時器,并且預(yù)分頻器的時鐘來源就是 CK_INT(下面還有很多不同的說法)。?

對于高級控制定時器和通用定時器的時鐘源需要找控制器外部時鐘、其他定時器等等模式,較為復(fù)雜,定時器來源:

1.系統(tǒng)RCC內(nèi)部(RCC的CK_INT,這個可以由系統(tǒng)內(nèi)部時鐘IMx_CLK直接提供)

2.系統(tǒng)內(nèi)外部的定時器(TIMX)

其中外部時鐘有關(guān)的時鐘源為

1.外部觸發(fā)輸入(也叫外部引腳輸出TIMx_ETR)

2.內(nèi)部觸發(fā)輸入(ITRx)

3.外部輸入腳(TIx)

STM32 定時器詳解

?

2.2 最常用的時鐘源(默認(rèn)設(shè)定)

關(guān)于來自系統(tǒng)(RCC)的時鐘這里還需要在仔細(xì)說明一下(也即是 CK_INT來源再說明一下):在RCC(系統(tǒng)時鐘)過程有這樣的流程:

STM32 定時器詳解STM32 定時器詳解

也就是說:由AHB時鐘經(jīng)過APB1預(yù)分頻系數(shù)轉(zhuǎn)至APB1時鐘,再通過某個規(guī)定轉(zhuǎn)至TIMxCLK時鐘(TIMxCLK就是上面說的內(nèi)部時鐘CK_INT)。值得注意的是TIMxCLK時鐘頻率一定是APB1時鐘頻率(圖中說了二分了就又會乘以二)

【APB1(RCCx系統(tǒng)中的時鐘)->CK_CNT時鐘】的過程

CK_PSC最終經(jīng)過PSC預(yù)分頻系數(shù)轉(zhuǎn)至CK_CNT(就是下面這個計數(shù)器)。

STM32 定時器詳解

原文鏈接:【STM32】通用定時器的基本原理(實例:定時器中斷)_stm32定時器中斷設(shè)置中斷變量_Yngz_Miao的博客-CSDN博客

感謝大佬。

三、計數(shù)過程

3.1 計數(shù)器時鐘CK_CNT

TIMxCLK經(jīng)過PSC預(yù)分頻器之后為CK_INT,作為CNT計數(shù)器的計數(shù)時鐘。PSC可以對定時器時鐘TIMxCLK(也就是CK_PSC)進(jìn)行1~65535之間任何一個數(shù)進(jìn)行分頻,CK_CNT = TIMxCLK / (PSC + 1)。PSC的值設(shè)置于TIMx_PSC寄存器。

STM32 定時器詳解

?

定時器的本質(zhì)是計數(shù)器,即對一定周期(頻率)的脈沖進(jìn)行計數(shù)。(定時器的本質(zhì)是計數(shù)器,即對一定周期(頻率)的脈沖進(jìn)行計數(shù)。_定時器為什么就是計數(shù)器_TYINY的博客-CSDN博客)

3.2 計數(shù)器有關(guān)的三個寄存器

要知道定時器的本質(zhì)是計數(shù)器和三個寄存器有關(guān)就行了

定時器計數(shù)過程主要涉及三個寄存器( STM32-定時器詳解_stm32定時器_KevinFlyn的博客-CSDN博客)

計數(shù)器寄存器(TIMx_CNT):向上計數(shù)、向下計數(shù)或者中心對齊計數(shù);

預(yù)分頻寄存器(TIMx_PSC):可將時鐘頻率按1到65535之間的任意值進(jìn)行分頻,可在運行時改變其設(shè)置值;

自動裝載寄存器(TIMx_ARR):如果TIMx_CR1寄存器中的ARPE位為0,ARR寄存器的內(nèi)容將直接寫入影子寄存器;如果ARPE為1,ARR寄存器的那日同將在每次的更新時間UEV發(fā)生時,傳送到影子寄存器;如果TIM1_CR1中的UDIS位為0,當(dāng)計數(shù)器產(chǎn)生溢出條件時,產(chǎn)生更新事件。:【STM32】通用定時器的基本原理(實例:定時器中斷)_stm32定時器中斷設(shè)置中斷變量_Yngz_Miao的博客-CSDN博客

3.3 其他的寄存器

當(dāng)然,還有幾個相關(guān)的寄存器需要記住

1.控制寄存器(TIMx_CR1)

作用:對計數(shù)器的計數(shù)方式、使能位等進(jìn)行設(shè)置。

這里有ARPE位:自動重裝載預(yù)裝載允許位。ARPE=0時,TIMx_ARR寄存器沒有緩沖;ARPE=1時,TIMx_ARR寄存器被裝入緩沖器。

2.DMA/中斷使能寄存器(TIMx_DIER)

DMA是一個臨時的寄存器,定時器能夠與DMA進(jìn)行通信

該寄存器能夠?qū)MA/中斷使能進(jìn)行配置。

3.4 定時器計算時間

通用定時器超時時間

超出(溢出)時間計算:Tout=(ARR+1)(PSC+1)/TIMxCLK。其中:Tout的單位為us,TIMxCLK的單位為MHz。

這里需要注意的是:PSC預(yù)分頻系數(shù)需要加1,同時自動重加載值也需要加1。

為什么自動重加載值需要加1,因為從ARR到0之間的數(shù)字是ARR+1個;

為什么預(yù)分頻系數(shù)需要加1,因為為了避免預(yù)分頻系數(shù)不設(shè)置的時候取0的情況,使之從1開始。

這里需要和之前的預(yù)分頻進(jìn)行區(qū)分:由于通用定時器的預(yù)分頻系數(shù)為1~65535之間的任意數(shù)值,為了從1開始,所以當(dāng)預(yù)分頻系數(shù)寄存器為0的時候,代表的預(yù)分頻系數(shù)為1。而之前的那些預(yù)分頻系數(shù)都是固定的幾個值,比如1、4、8、16、32、64等等,而且可能0x000代表1,0x001代表4,0x010代表8等等。也就是說,一邊是隨意的定義(要從1開始),另一邊是宏定義了某些值(只有特定的一些值)。

比如,想要設(shè)置超出時間為500ms,并配置中斷,TIMxCLK按照系統(tǒng)默認(rèn)初始化來(即72MHz),PSC取7199,由此可以計算出ARR為4999。

也就是說,在內(nèi)部時鐘TIMxCLK為72MHz,預(yù)分頻系數(shù)為7199的時候,從4999遞減至0的計數(shù)事件是500ms倒計時。

3.5 代碼

代碼:

概念很多,但是代碼很少:

1.使能定時器時鐘。

RCC_APB1PeriphClockCmd();

2. 初始化定時器,配置ARR,PSC。

TIM_TimeBaseInit();

3.開啟定時器中斷,配置NVIC。

void TIM_ITConfig();

NVIC_Init();

4.使能定時器。

TIM_Cmd();

5.編寫中斷服務(wù)函數(shù)。

TIMx_IRQHandler();

還有獲取狀態(tài)位的函數(shù)(這部分區(qū)別可以查看:STM32學(xué)習(xí)筆記---TIM_GetFlagStatus和TIM_GetITStatus兩個固件庫函數(shù)的區(qū)別_小重拌豆腐的博客-CSDN博客)

FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);

void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);文章來源地址http://www.zghlxwxcb.cn/news/detail-464065.html


到了這里,關(guān)于STM32 定時器詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32高級定時器詳解

    STM32高級定時器詳解

    ?作者簡介:嵌入式入坑者,與大家一起加油,希望文章能夠幫助各位?。。?! ??個人主頁:@rivencode的個人主頁 ??系列專欄:玩轉(zhuǎn)STM32 ??保持學(xué)習(xí)、保持熱愛、認(rèn)真分享、一起進(jìn)步??! 基本定時器TIM6和TIM7各包含 一個16位自動裝載計數(shù)器 ,由各自的可編程預(yù)分頻器驅(qū)動。

    2024年01月19日
    瀏覽(20)
  • STM32中TIM定時器定時功能詳解(適用基本,通用,高級定時器)

    STM32中TIM定時器定時功能詳解(適用基本,通用,高級定時器)

    定時器有高級定時器、通用定時器、基本定時器三種類型。具體功能如下。 上面是每種定時器所具有的功能。 我們可以看到每種定時器都有一個定時功能,(可能是名字的由來吧)。當(dāng)然,每個定時器都可以來使用定時功能,但是我們往往在基本定時器和通用定時器上面使用

    2024年01月19日
    瀏覽(31)
  • 【STM32】定時器PWM模式詳解

    【STM32】定時器PWM模式詳解

    PWM模式: PWM模式1,向上計數(shù)時,PWM信號從 有效電平 變?yōu)?無效電平 PWM模式2,向上計數(shù)時,PWM信號從 無效電平 變?yōu)?有效電平 PWM極性: 極性為高時, 高電平為有效電平 ,低電平為無效電平 極性為低時, 低電平為有效電平 ,高電平為無效電平 中心對齊模式(先向上再向下

    2024年02月09日
    瀏覽(22)
  • STM32—定時器原理及配置(入門詳解)

    STM32—定時器原理及配置(入門詳解)

    目錄 一、定時器工作原理 二、定時器分類?? 1.基本定時器(TIM6~TIM7) 2.通用定時器(TIM2~TIM5) 3.高級定時器(TIM1和TIM8) 三、定時器計數(shù)模式 四、溢出時間計算 五、定時器配置 六、main.c代碼 ? ? ? ? 利用精準(zhǔn)的時基,通過硬件的方式,實現(xiàn)定時功能。定時器核心就是計數(shù)

    2024年02月16日
    瀏覽(18)
  • STM32 TIM定時器,配置,詳解(1)

    STM32 TIM定時器,配置,詳解(1)

    ? ? ? ?? 計數(shù)器寄存器(TIMx_CNT) 、 預(yù)分頻器寄存器(TIMx_PSC) 、 自動重載寄存器(TIMx_ARR)。 ???????? PSC預(yù)分頻器,顧名思義,先預(yù)備一下分頻,有時候頻率過高,后面的定時器承受不住,就先用PSC先分頻一下。 如何分頻的? 將每接受到一次,PSC就跳動一次,當(dāng)?shù)搅薖SC的設(shè)

    2024年02月01日
    瀏覽(36)
  • STM32的定時器詳解(嵌入式學(xué)習(xí))

    STM32的定時器詳解(嵌入式學(xué)習(xí))

    想要了解STM32的時鐘系統(tǒng) 點擊這里跳轉(zhuǎn)——》STM32的時鐘系統(tǒng)(嵌入式學(xué)習(xí)) 建議先看看時鐘樹如何配置 點擊這里跳轉(zhuǎn)——》STM32的時鐘樹配置(嵌入式學(xué)習(xí)) 跳轉(zhuǎn)——》STM32的時鐘基礎(chǔ)詳解(嵌入式學(xué)習(xí)) 跳跳轉(zhuǎn)——》STM32的時鐘源詳解(嵌入式學(xué)習(xí)) SysTick又稱滴答定時

    2024年02月13日
    瀏覽(28)
  • STM32F4_定時器輸入捕獲詳解

    STM32F4_定時器輸入捕獲詳解

    目錄 1. 輸入捕獲簡介 2. 輸入捕獲框圖 3. 輸入捕獲模式 4. 相關(guān)寄存器 4.1 TIMx_ARR、TIMx_PSC 4.2 捕獲/比較寄存器1:TIMx_CCMR1 4.3 捕獲/比較使能寄存器 TIMx_CCER 4.4 中斷使能寄存器 TIMx_DIER 5. 庫函數(shù)配置輸入捕獲高電平脈沖寬度 6. 實驗程序 6.1 main.c 6.2 IntputCapture.c 6.3 IntputCapture.h ???

    2024年02月04日
    瀏覽(22)
  • STM32—TIM定時器初始化結(jié)構(gòu)體詳解

    STM32—TIM定時器初始化結(jié)構(gòu)體詳解

    ??注:高級控制定時器可以用到所有初始化結(jié)構(gòu)體,通用定時器不能使用 TIM_BDTRInitTypeDef 結(jié)構(gòu)體,基本定時器只能使用時基結(jié)構(gòu)體。 ?? 時基結(jié)構(gòu)體TIM_TimeBaseInitTypeDef用于定時器基礎(chǔ)參數(shù)設(shè)置,與TIM_TimeBaseInit函數(shù)配合使用完成配置。 (1) TIM_Prescaler:定時器預(yù)分頻器設(shè)置,

    2024年02月02日
    瀏覽(23)
  • STM32F系列項目定時器配置-中斷觸發(fā)源詳解

    STM32F系列項目定時器配置-中斷觸發(fā)源詳解

    1.以高級定時器為例: ?2.觸發(fā)源選擇與極性選擇: ? 3.觸發(fā)源介紹 (282條消息) 【STM32技巧】(1)STM32定時器8種觸發(fā)源之ITR0~ITR3說明_stm32 定時器觸發(fā)定時器_小石頭有大內(nèi)涵的博客-CSDN博客 ITR0 內(nèi)部觸發(fā)0 ITR1 內(nèi)部觸發(fā)1 ITR2 內(nèi)部觸發(fā)2 ITR3 內(nèi)部觸發(fā)3 ITR3 ?

    2024年02月11日
    瀏覽(34)
  • 【STM32學(xué)習(xí)】定時器寄存器配置、功能工作過程詳解

    【STM32學(xué)習(xí)】定時器寄存器配置、功能工作過程詳解

    STM32-定時器詳解 STM32個人筆記-定時器 本文針對STM32F103系列單片機(jī)的定時器進(jìn)行介紹。 主要是其常用功能的工作流程、以及寄存器的對應(yīng)配置。 該圖清晰的表明了各種定時器的參數(shù)與功能。其中,基礎(chǔ)定時器基本上就只有最簡單的計數(shù)到了然后觸發(fā)中斷的功能;通用和高級定

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包