<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32學(xué)習(xí)筆記——利用通用定時器TIM2進行精確延時

          STM32學(xué)習(xí)筆記——利用通用定時器TIM2進行精確延時

          作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏

          1.3.4自動重裝載寄存器(TIMx_ARR)

          1.3.5狀態(tài)寄存器(TIMx_SR)

          本篇中主要關(guān)心該寄存器第0位

          當(dāng)產(chǎn)生溢出時,該標(biāo)記位被置1,執(zhí)行更新事件后由軟件清0。

          其他眾多關(guān)于TIM寄存器可查閱《STM32F10x參考手冊》

          1.4基本計數(shù)中斷過程

          按照自己的理解,使能中斷及定時器后,根據(jù)時鐘來源以及預(yù)分頻器(TIMx_PSC)所設(shè)置的分頻數(shù)開始計數(shù),當(dāng)計數(shù)達到自動重裝載寄存器(TIMx_ARR)中所存儲的值時,狀態(tài)寄存器(TIMx_SR)中對應(yīng)的標(biāo)志位(第0位)置1,通過軟件檢查該位則可以更新事件。

          例如:系統(tǒng)中APB1(TIM2被掛在APB下)時鐘頻率為36MHz,設(shè)置TIMx_PSC分頻為36000,則作為定時器TIM2的時鐘頻率為36000000/36000=1000Hz,即1秒內(nèi)內(nèi)部開關(guān)計數(shù)1000次,每次1ms,設(shè)置TIMx_ARR重裝值為1000,則計數(shù)達1000次時,TIMx_SR中第0位標(biāo)志位被置1,此時為延遲1秒。

          2TIM固件庫函數(shù)

          2.1函數(shù)TIM_DeInit

          函數(shù)名

          TIM_DeInit

          函數(shù)原型

          voidTIM_DeInit(TIM_TypeDef*TIMx)

          功能描述

          將外設(shè)TIMx寄存器重設(shè)為缺省值

          輸入?yún)?shù)

          TIMx:x可以是2、3或4,來選擇TIM外設(shè)

          被調(diào)用函數(shù)

          RCC_APB1PeriphClockCmd().

          例:重設(shè)TIM2

          [cpp]view plaincopy
          1. TIM_DeInit(TIM2);

          2.2函數(shù)TIM_TimeBaseInit

          函數(shù)名

          TIM_TimeBaseInit

          函數(shù)原型

          voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct)

          功能描述

          根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位

          輸入?yún)?shù)1

          TIMx:x可以是2、3或4,來選擇TIM外設(shè)

          輸入?yún)?shù)2

          TIMTimeBase_InitStruct:指向結(jié)構(gòu)TIM_TimeBaseInitTypeDef的指針,包含了TIMx時間基數(shù)單位的配置信息

          參閱Section:TIM_TimeBaseInitTypeDef查閱更多該參數(shù)允許取值范圍.

          TIM_TimeBaseInitTypeDefstructure

          TIM_TimeBaseInitTypeDef定義于文件“stm32f10x_tim.h”:

          [cpp]view plaincopy
          1. typedefstruct
          2. {
          3. u16TIM_Period;
          4. u16TIM_Prescaler;
          5. u8TIM_ClockDivision;
          6. u16TIM_CounterMode;
          7. }TIM_TimeBaseInitTypeDef;

          TIM_Period

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

          TIM_Prescaler

          TIM_Prescaler設(shè)置了用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值。它的取值必須在0x0000和0xFFFF之間。

          TIM_ClockDivision

          TIM_ClockDivision設(shè)置了時鐘分割。該參數(shù)取值見下表。

          TIM_ClockDivision

          描述

          TIM_CKD_DIV1

          TDTS=Tck_tim

          TIM_CKD_DIV2

          TDTS=2Tck_tim

          TIM_CKD_DIV4

          TDTS=4Tck_tim

          TIM_CounterMode

          TIM_CounterMode選擇了計數(shù)器模式。該參數(shù)取值見下表。

          TIM_CounterMode

          描述

          TIM_CounterMode_Up

          TIM向上計數(shù)模式

          TIM_CounterMode_Down

          TIM向下計數(shù)模式

          TIM_CounterMode_CenterAligned1

          TIM中央對齊模式1計數(shù)模式

          TIM_CounterMode_CenterAligned2

          TIM中央對齊模式2計數(shù)模式

          TIM_CounterMode_CenterAligned3

          TIM中央對齊模式3計數(shù)模式

          例:

          [cpp]view plaincopy
          1. TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
          2. TIM_TimeBaseStructure.TIM_Period=0xFFFF;
          3. TIM_TimeBaseStructure.TIM_Prescaler=0xF;
          4. TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
          5. TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
          6. TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

          2.3函數(shù)TIM_ClearFlag

          函數(shù)名

          TIM_ClearFlag

          函數(shù)原型

          voidTIM_ClearFlag(TIM_TypeDef*TIMx,u32TIM_FLAG)

          功能描述

          清除TIMx的待處理標(biāo)志位

          輸入?yún)?shù)1

          TIMx:x可以是2,3或者4,來選擇TIM外設(shè)

          輸入?yún)?shù)2

          TIM_FLAG:待清除的TIM標(biāo)志位

          參閱Section:TIM_FLAG查閱更多該參數(shù)允許取值范圍

          TIM_FLAG值

          TIM_FLAG

          描述

          TIME_FLAG_Update

          TIM更新標(biāo)志位

          ……

          ……

          例:

          [cpp]view plaincopy
          1. TIM_ClearFlag(TIM2,TIME_FLAG_Update);

          2.4函數(shù)TIM_ITConfig

          函數(shù)名

          TIM_ITConfig

          函數(shù)原型

          voidTIM_ITConfig(TIM_TypeDef*TIMx,u16TIM_IT,FunctionalState

          NewState)

          功能描述

          使能或者失能指定的TIM中斷

          輸入?yún)?shù)1

          TIMx:x可以是2,3或者4,來選擇TIM外設(shè)

          輸入?yún)?shù)2

          TIM_IT:待使能或者失能的TIM中斷源

          參閱Section:TIM_IT查閱更多該參數(shù)允許取值范圍

          輸入?yún)?shù)3

          NewState:TIMx中斷的新狀態(tài)

          這個參數(shù)可以取:ENABLE或者DISABLE



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();