0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基礎(chǔ)定時(shí)器實(shí)驗(yàn)

汽車電子技術(shù) ? 來源:滑小稽筆記 ? 作者: 電子技術(shù)園地 ? 2023-03-01 15:59 ? 次閱讀

7.1 STM32定時(shí)器概述

STM32內(nèi)部共有8個(gè)定時(shí)器,其中Timer1和Timer8屬于高級定時(shí)器,Timer2~Timer5屬于通用定時(shí)器,8個(gè)定時(shí)器的資源獨(dú)立,互不影響。

   STM32的通用定時(shí)器是一個(gè)通過可編程預(yù)分頻器(PSC)驅(qū)動的16位自動裝載計(jì)數(shù)器(CNT)構(gòu)成。STM32的通用定時(shí)器可以被用于:測量輸入信號的脈沖長度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和PWM)等。使用定時(shí)器預(yù)分頻器和RCC時(shí)鐘控制器預(yù)分頻器,脈沖長度和波形周期可以在幾個(gè)微秒到幾個(gè)毫秒間調(diào)整。STM32的每個(gè)通用定時(shí)器都是完全獨(dú)立的,沒有互相共享的任何資源。

通用定時(shí)器的內(nèi)部結(jié)構(gòu)如下圖所示。

圖片

7.2 相關(guān)寄存器

要使用通用定時(shí)器的基本功能,一共需要配置4個(gè)寄存器,剩余的寄存器都是在輸入捕獲和輸出比較中使用到的。

7.2.1 控制寄存器1:TIMx_CR1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- CKD[1:0] ARE CMS[1:0] DIR OPM URS UDIS CEN

Bit 9~Bit 8:時(shí)鐘分頻系數(shù),定義定時(shí)器輸入時(shí)鐘頻率與數(shù)字濾波器采樣頻率之間的分頻系數(shù)

00:采樣頻率與定時(shí)器輸入頻率相等

   01:采樣頻率是定時(shí)器輸入頻率的210:采樣頻率是定時(shí)器輸入頻率的411:保留

Bit 7:自動重裝載使能

0:TIMx_ARR寄存器中沒有緩沖

   1:TIMx_ARR寄存器的數(shù)據(jù)裝入緩存器

Bit 6~Bit 5:選擇中央對齊模式

00:邊沿對齊模式,計(jì)數(shù)器根據(jù)方向位DIR計(jì)數(shù)

   01:中央對齊模式1,計(jì)數(shù)器交替向上向下計(jì)數(shù),當(dāng)TIMx_CCMRx中的CCxS=00時(shí),計(jì)數(shù)器向下計(jì)數(shù)時(shí)被設(shè)置

   10:中央對齊模式2,計(jì)數(shù)器交替向上向下計(jì)數(shù),當(dāng)TIMx_CCMRx中的CCxS=00時(shí),計(jì)數(shù)器向上計(jì)數(shù)時(shí)被設(shè)置

   11:中央對齊模式3,計(jì)數(shù)器交替向上向下計(jì)數(shù),當(dāng)TIMx_CCMRx中的CCxS=00時(shí),計(jì)數(shù)器向下和向上計(jì)數(shù)時(shí)       被均設(shè)置

Bit 4:計(jì)數(shù)方向

0:向上計(jì)數(shù),計(jì)數(shù)器從0計(jì)數(shù)到TIMx_ARR寄存器的數(shù)據(jù)時(shí)重新從0開始并產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件

   1:向下計(jì)數(shù),計(jì)數(shù)器從TIMx_ARR寄存器的數(shù)據(jù)計(jì)數(shù)到0時(shí)重新從TIMx_ARR寄存器的數(shù)據(jù)開始并產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件

Bit 3:單脈沖模式

0:發(fā)生更新事件時(shí)計(jì)數(shù)器不停止

   1:在發(fā)生下一次更新事件時(shí),計(jì)數(shù)器停止

Bit 2:更新請求源

0:如果使能了更新中斷或DMA請求,計(jì)數(shù)器溢出/設(shè)置UG位/從模式控制器產(chǎn)生更新都產(chǎn)生更新中斷或DMA請求

   1:如果使能了更新中斷或DMA請求,只有計(jì)數(shù)器溢出才產(chǎn)生更新中斷或DMA請求

Bit 1:禁止更新

0:允許UEV。更新事件由計(jì)數(shù)器溢出/設(shè)置UG位/從模式控制器產(chǎn)生更新事件產(chǎn)生

   1:不產(chǎn)生更新事件

Bit 0:使能計(jì)數(shù)器

0:禁止計(jì)數(shù)器

   1:使能計(jì)數(shù)器

7.2.2 DMA/中斷使能寄存器:TIMx_DIER

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- TDE - CC4DE CC3DE CC2DE CC1DE UDE - TIE - CC4IE CC3IE CC2IE CC1IE UIE

Bit 14:允許觸發(fā)DMA請求

0:禁止觸發(fā)DMA請求

   1:允許觸發(fā)DMA請求

Bit 12:允許捕獲/比較4的DMA請求

0:禁止捕獲/比較4的DMA請求

   1:允許捕獲/比較4的DMA請求

Bit 11:允許捕獲/比較3的DMA請求

0:禁止捕獲/比較3的DMA請求

   1:允許捕獲/比較3的DMA請求

Bit 10:允許捕獲/比較2的DMA請求

0:禁止捕獲/比較2的DMA請求

   1:允許捕獲/比較2的DMA請求

Bit 9:允許捕獲/比較1的DMA請求

0:禁止捕獲/比較1的DMA請求

   1:允許捕獲/比較1的DMA請求

Bit 8:允許更新的DMA請求

0:禁止更新的DMA請求

   1:允許更新的DMA請求

Bit 6:觸發(fā)中斷使能

0:禁止觸發(fā)中斷

   1:允許觸發(fā)中斷

Bit 4:允許捕獲/比較4的中斷

0:禁止捕獲/比較4的中斷

   1:允許捕獲/比較4的中斷

Bit 3:允許捕獲/比較3的中斷

0:禁止捕獲/比較3的中斷

   1:允許捕獲/比較3的中斷

Bit 2:允許捕獲/比較2的中斷

0:禁止捕獲/比較2的中斷

   1:允許捕獲/比較2的中斷

Bit 1:允許捕獲/比較1的中斷

0:禁止捕獲/比較1的中斷

   1:允許捕獲/比較1的中斷

Bit 0:允許更新中斷

0:禁止更新中斷

   1:允許更新中斷

7.2.3 預(yù)分頻寄存器:TIMx_PSC

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PSC[15:0]

Bit 15~Bit 0:預(yù)分頻器的值,計(jì)數(shù)器的時(shí)鐘頻率計(jì)算公式為

圖片

7.2.4 自動重裝載寄存器:TIMx_ARR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ARR[15:0]

Bit 15~Bit 0:自動重裝載的值,該值就是傳送到實(shí)際的自動重裝載寄存器的數(shù)值,當(dāng)該寄存器的值為空時(shí),計(jì)數(shù)器不工作。

7.2.5 狀態(tài)寄存器:TIMx_SR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- CC4OF CC3OF CC2OF CC1OF - TIF - CC4IF CC3IF CC2IF CC1IF UIF

Bit 12:捕獲/比較4重復(fù)捕獲標(biāo)記

0:無重復(fù)捕獲產(chǎn)生

   1:當(dāng)計(jì)數(shù)器的值捕獲到TIMx_CCR4寄存器時(shí),CC4IF的狀態(tài)已經(jīng)為1

Bit 11:捕獲/比較3重復(fù)捕獲標(biāo)記

0:無重復(fù)捕獲產(chǎn)生

   1:當(dāng)計(jì)數(shù)器的值捕獲到TIMx_CCR3寄存器時(shí),CC3IF的狀態(tài)已經(jīng)為1

Bit 10:捕獲/比較2重復(fù)捕獲標(biāo)記

0:無重復(fù)捕獲產(chǎn)生

   1:當(dāng)計(jì)數(shù)器的值捕獲到TIMx_CCR2寄存器時(shí),CC2IF的狀態(tài)已經(jīng)為1

Bit 9:捕獲/比較1重復(fù)捕獲標(biāo)記

0:無重復(fù)捕獲產(chǎn)生

   1:當(dāng)計(jì)數(shù)器的值捕獲到TIMx_CCR1寄存器時(shí),CC1IF的狀態(tài)已經(jīng)為1

Bit 6:觸發(fā)器中斷標(biāo)記

0:無觸發(fā)事件產(chǎn)生

   1:觸發(fā)器中斷等待響應(yīng)

Bit 4:捕獲/比較4中斷標(biāo)記

**通道CC4配置為輸出模式** :

   0:無匹配發(fā)生

   1:TIMx_CNT的值與TIMx_CCR4的值匹配

    **通道CC4配置為輸入模式** :

   0:沒有輸入捕獲產(chǎn)生

   1:計(jì)數(shù)器值已經(jīng)被捕獲到TIMx_CCR4中(在IC4上檢測到與所選極性相同的邊沿)

Bit 3:捕獲/比較3中斷標(biāo)記

** 通道CC3配置為輸出模式** :

0:無匹配發(fā)生

   1:TIMx_CNT的值與TIMx_CCR3的值匹配

    **通道CC3配置為輸入模式** :

   0:沒有輸入捕獲產(chǎn)生

   1:計(jì)數(shù)器值已經(jīng)被捕獲到TIMx_CCR3中(在IC3上檢測到與所選極性相同的邊沿)

Bit 2:捕獲/比較2中斷標(biāo)記

**通道CC2配置為輸出模式** :

   0:無匹配發(fā)生

   1:TIMx_CNT的值與TIMx_CCR2的值匹配

    **通道CC2配置為輸入模式** :

   0:沒有輸入捕獲產(chǎn)生

   1:計(jì)數(shù)器值已經(jīng)被捕獲到TIMx_CCR2中(在IC2上檢測到與所選極性相同的邊沿)

Bit 1:捕獲/比較1中斷標(biāo)記

**通道CC1配置為輸出模式** :

   0:無匹配發(fā)生

   1:TIMx_CNT的值與TIMx_CCR1的值匹配

    **通道CC1配置為輸入模式** :

   0:沒有輸入捕獲產(chǎn)生

   1:計(jì)數(shù)器值已經(jīng)被捕獲到TIMx_CCR1中(在IC1上檢測到與所選極性相同的邊沿)

Bit 0:更新中斷標(biāo)記

0:無更新事件產(chǎn)生

   1:更新中斷等待響應(yīng),當(dāng)產(chǎn)生更新事件時(shí)該位由硬件1,由軟件清0

7.2.6 計(jì)數(shù)器:TIMx_CNT

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CNT[15:0]

Bit 15~Bit 0:計(jì)數(shù)器的值

7.3 定時(shí)器例程

利用定時(shí)器1實(shí)現(xiàn)LED以1Hz閃爍,LED接在PA1上。

(1)創(chuàng)建TIM1驅(qū)動文件,tim.c和tim.h,并將文件添加進(jìn)工程。

圖片

(2)在寄存器文件中添加定義如下圖所示。

添加定時(shí)器地址

圖片

添加定時(shí)器結(jié)構(gòu)體映射

圖片

(3)tim.h寫入如下圖所示代碼

圖片

(4)tim.c寫入如下所示代碼

#include "tim.h"
/***************************************************
Name    :TIM7_IRQHandler
Function    :TIM7中斷服務(wù)函數(shù)
Paramater  :None
Return    :None
***************************************************/
u8 TIM1_Count ;
void TIM1_UP_IRQHandler()
{
  if( ( TIM1->SR&0x01 )==0x01 )
  {
    TIM1_Count ++ ;
    if( TIM1_Count==1 )
      LED = 0 ;
    else if( TIM1_Count==2 )
    {
      LED = 1 ;
      TIM1_Count = 0 ;
    }
  }
  TIM1->SR &= ~( 1<<0 ) ;
}
/***************************************************
Name    :TIM7_Init
Function    :TIM7初始化
Paramater  :
      psc:預(yù)分頻系數(shù)
      arr:重裝載值
Return    :None
***************************************************/
void TIM1_Init( u16 psc, u16 arr )
{
  //LED初始化
  RCC->APB2ENR |= 1<<2 ;
  GPIOA->CRL &= 0xFFFFFF0F ;
  GPIOA->CRL |= 0x00000030 ;
  LED = 1 ;
  //定時(shí)器初始化
  RCC->APB2ENR |= 1<<11 ;
  TIM1->DIER |= 1<<0 ;
  TIM1->PSC = psc ;
  TIM1->ARR = arr ;
  TIM1->CR1 |= 1<<0 ;
  NVIC_Init( 3, 2, TIM1_UP_IRQn, 2 ) ;
  }

(5)主函數(shù)編寫如下所示代碼

圖片

7.4 軟件仿真截圖

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2262

    文章

    10846

    瀏覽量

    353650
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3226

    瀏覽量

    114139
  • TIMER1
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    1967
收藏 人收藏

    評論

    相關(guān)推薦

    555定時(shí)器實(shí)驗(yàn)

    555定時(shí)器實(shí)驗(yàn)①熟悉555定時(shí)器電路的工作原理 ②掌握用555定時(shí)器構(gòu)成的單穩(wěn)態(tài)觸發(fā)及施密特觸   發(fā)
    發(fā)表于 03-18 21:14

    CPU 定時(shí)器實(shí)驗(yàn)

    CPU 定時(shí)器實(shí)驗(yàn)
    發(fā)表于 01-08 10:45

    定時(shí)器實(shí)驗(yàn)

    定時(shí)器實(shí)驗(yàn):透過配置定時(shí)器相關(guān)寄存的配置,實(shí)現(xiàn)定時(shí)器2每1S中斷一次,通過數(shù)碼管將時(shí)間實(shí)時(shí)的顯示出來。用到的函數(shù)功能如下:(1) 利用TI
    發(fā)表于 08-19 07:22

    STM32CubeMX FreeRTOS的軟件定時(shí)器如何實(shí)驗(yàn)

    STM32CubeMX FreeRTOS的軟件定時(shí)器如何實(shí)驗(yàn)
    發(fā)表于 10-13 08:29

    定時(shí)器實(shí)驗(yàn)

    定時(shí)器實(shí)驗(yàn) 一.實(shí)驗(yàn)目的本程序展示了Small RTOS51 中使用一個(gè)任
    發(fā)表于 09-26 17:44 ?1325次閱讀
    軟<b class='flag-5'>定時(shí)器</b><b class='flag-5'>實(shí)驗(yàn)</b>

    定時(shí)器實(shí)驗(yàn)

    實(shí)驗(yàn)  定時(shí)器實(shí)驗(yàn) 一.實(shí)驗(yàn)目的1.學(xué)習(xí)8051內(nèi)部定時(shí)器/計(jì)數(shù)的使用和編程方
    發(fā)表于 05-17 10:57 ?4255次閱讀
    <b class='flag-5'>定時(shí)器</b><b class='flag-5'>實(shí)驗(yàn)</b>

    CPU定時(shí)器實(shí)驗(yàn)

    實(shí)驗(yàn)三CPU定時(shí)器實(shí)驗(yàn)實(shí)驗(yàn)三CPU定時(shí)器實(shí)驗(yàn)實(shí)驗(yàn)三C
    發(fā)表于 01-07 17:31 ?2次下載

    實(shí)驗(yàn)五 TIM定時(shí)器實(shí)驗(yàn)

    嵌入式TIM定時(shí)器實(shí)驗(yàn)
    發(fā)表于 12-17 20:48 ?7次下載

    555定時(shí)器實(shí)驗(yàn)的仿真電路圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是555定時(shí)器實(shí)驗(yàn)的仿真電路圖免費(fèi)下載。
    發(fā)表于 03-20 16:38 ?77次下載
    555<b class='flag-5'>定時(shí)器</b><b class='flag-5'>實(shí)驗(yàn)</b>的仿真電路圖免費(fèi)下載

    使用STM32F103單片機(jī)實(shí)現(xiàn)定時(shí)器實(shí)驗(yàn)的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用STM32F103單片機(jī)實(shí)現(xiàn)定時(shí)器實(shí)驗(yàn)的詳細(xì)資料說明。
    發(fā)表于 04-07 08:00 ?5次下載
    使用STM32F103單片機(jī)實(shí)現(xiàn)<b class='flag-5'>定時(shí)器</b><b class='flag-5'>實(shí)驗(yàn)</b>的詳細(xì)資料說明

    555定時(shí)器的應(yīng)用實(shí)驗(yàn)程序和工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是555定時(shí)器的應(yīng)用實(shí)驗(yàn)程序和工程文件免費(fèi)下載。
    發(fā)表于 09-02 16:00 ?11次下載
    555<b class='flag-5'>定時(shí)器</b>的應(yīng)用<b class='flag-5'>實(shí)驗(yàn)</b>程序和工程文件免費(fèi)下載

    定時(shí)器實(shí)驗(yàn)的程序和工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是定時(shí)器實(shí)驗(yàn)的程序和工程文件免費(fèi)下載。
    發(fā)表于 03-05 16:34 ?6次下載

    定時(shí)器實(shí)驗(yàn)

    定時(shí)器實(shí)驗(yàn)兩個(gè)數(shù)碼管,K1,K2兩個(gè)按鍵,完成K1啟動計(jì)數(shù),K2暫停計(jì)數(shù),每一秒鐘數(shù)碼管增加1,60秒鐘后,蜂鳴器響一聲,數(shù)碼管回歸0,重新計(jì)數(shù)。代碼 #include"
    發(fā)表于 11-23 17:51 ?0次下載
    <b class='flag-5'>定時(shí)器</b><b class='flag-5'>實(shí)驗(yàn)</b>

    實(shí)驗(yàn)三 、通用定時(shí)器實(shí)驗(yàn)

    實(shí)驗(yàn)三 、通用定時(shí)器實(shí)驗(yàn)?自律 學(xué)習(xí) 堅(jiān)強(qiáng) ,拒絕迷茫。作者:行走的皮卡丘時(shí)間:2021/4/4喜歡就去追,這個(gè)紅燈等不到,說不定下一個(gè)紅燈等到了,嘻嘻!!?。。。?!文章目錄實(shí)驗(yàn)
    發(fā)表于 11-23 18:21 ?3次下載
    <b class='flag-5'>實(shí)驗(yàn)</b>三 、通用<b class='flag-5'>定時(shí)器</b><b class='flag-5'>實(shí)驗(yàn)</b>

    基于STM32的定時(shí)器實(shí)驗(yàn)分享

    基于STM32的定時(shí)器實(shí)驗(yàn)分資料分享。
    發(fā)表于 05-24 15:51 ?1次下載