新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記——利用通用定時器TIM2進行精確延時

        STM32學習筆記——利用通用定時器TIM2進行精確延時

        作者: 時間:2016-11-28 來源:網絡 收藏

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

        1.3.5狀態寄存器(TIMx_SR)

        本篇中主要關心該寄存器第0位

        當產生溢出時,該標記位被置1,執行更新事件后由軟件清0。

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

        1.4基本計數中斷過程

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

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

        2TIM固件庫函數

        2.1函數TIM_DeInit

        函數名

        TIM_DeInit

        函數原型

        voidTIM_DeInit(TIM_TypeDef*TIMx)

        功能描述

        將外設TIMx寄存器重設為缺省值

        輸入參數

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

        被調用函數

        RCC_APB1PeriphClockCmd().

        例:重設TIM2

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

        2.2函數TIM_TimeBaseInit

        函數名

        TIM_TimeBaseInit

        函數原型

        voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct)

        功能描述

        根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位

        輸入參數1

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

        輸入參數2

        TIMTimeBase_InitStruct:指向結構TIM_TimeBaseInitTypeDef的指針,包含了TIMx時間基數單位的配置信息

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

        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設置了在下一個更新事件裝入活動的自動重裝載寄存器周期的值。它的取值必須在0x0000和0xFFFF之間。

        TIM_Prescaler

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

        TIM_ClockDivision

        TIM_ClockDivision設置了時鐘分割。該參數取值見下表。

        TIM_ClockDivision

        描述

        TIM_CKD_DIV1

        TDTS=Tck_tim

        TIM_CKD_DIV2

        TDTS=2Tck_tim

        TIM_CKD_DIV4

        TDTS=4Tck_tim

        TIM_CounterMode

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

        TIM_CounterMode

        描述

        TIM_CounterMode_Up

        TIM向上計數模式

        TIM_CounterMode_Down

        TIM向下計數模式

        TIM_CounterMode_CenterAligned1

        TIM中央對齊模式1計數模式

        TIM_CounterMode_CenterAligned2

        TIM中央對齊模式2計數模式

        TIM_CounterMode_CenterAligned3

        TIM中央對齊模式3計數模式

        例:

        [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函數TIM_ClearFlag

        函數名

        TIM_ClearFlag

        函數原型

        voidTIM_ClearFlag(TIM_TypeDef*TIMx,u32TIM_FLAG)

        功能描述

        清除TIMx的待處理標志位

        輸入參數1

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

        輸入參數2

        TIM_FLAG:待清除的TIM標志位

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

        TIM_FLAG值

        TIM_FLAG

        描述

        TIME_FLAG_Update

        TIM更新標志位

        ……

        ……

        例:

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

        2.4函數TIM_ITConfig

        函數名

        TIM_ITConfig

        函數原型

        voidTIM_ITConfig(TIM_TypeDef*TIMx,u16TIM_IT,FunctionalState

        NewState)

        功能描述

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

        輸入參數1

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

        輸入參數2

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

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

        輸入參數3

        NewState:TIMx中斷的新狀態

        這個參數可以?。篍NABLE或者DISABLE



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 隆尧县| 得荣县| 宁南县| 湘阴县| 壤塘县| 儋州市| 澳门| 呼图壁县| 三江| 新宁县| 万载县| 枣庄市| 尚义县| 崇文区| 景谷| 邮箱| 澄江县| 枣庄市| 视频| 清镇市| 宜春市| 鄂伦春自治旗| 长泰县| 康乐县| 当阳市| 浑源县| 梅州市| 广西| 鄢陵县| 遵义市| 集安市| 通江县| 呼图壁县| 南丰县| 海南省| 赤水市| 黎平县| 尚义县| 密云县| 日土县| 保靖县|