程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 定時器,js定時器

定時器,js定時器

編輯:關於C語言

定時器,js定時器


 

      STM32定時器功能強大,共有8個16位定時器,其中TIM6、TIM7為基本定時器,主要產生DAC觸發信號;TIM2、TIM3、TIM4、TIM5為通用定時器,除了基本的定時外,主要還有幾個可用場合

      • 捕獲/比較寄存器,可實現脈沖頻率測量;
      • PWM輸出過程分析;
      • PWM輸入過程分析;
      • 定時器時鐘,可使用外部脈沖作為定時器時鐘源;

TIM1和TIM8為高級定時器,它們具有基本、通用定時器的所有功能外,還具有三廂6步電機的接口、剎車功能及用於PWM驅動電路的死區時間控制等。相比通用定時器,主要多出了BRK、DTG兩個結構,因而具有了死區時間的控制功能。

以定時器3為例,初始化程序如下:

void timer_init_(u16 err,u16 psc)
{
  TIM_TimeBaseInitTypeDef TIM_instructer;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
    TIM_instructer.TIM_Period=err;
    TIM_instructer.TIM_Prescaler=psc;
    TIM_instructer.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_instructer.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeBaseInit(TIM3,&TIM_instructer);
    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
    TIM_Cmd(TIM3,ENABLE);    
}

void NIVC_init()
{
    NVIC_InitTypeDef NVIC_instructer;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    NVIC_instructer.NVIC_IRQChannel=TIM3_IRQn;
    NVIC_instructer.NVIC_IRQChannelCmd=ENABLE;
    NVIC_instructer.NVIC_IRQChannelPreemptionPriority=1;
    NVIC_instructer.NVIC_IRQChannelSubPriority=1;
    NVIC_Init(&NVIC_instructer);
}

void TIM3_IRQHandler()
{
  if(TIM_GetFlagStatus(TIM3,TIM_IT_Update)!=RESET)
    {
      LED0=~LED0;        
    }
  TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}

其中NVIC初始化上節已有,針對TIM3的初始化,做出詳解。

typedef struct 
{ 
u16 TIM_Period; 
u16 TIM_Prescaler; 
u8 TIM_ClockDivision; 
u16 TIM_CounterMode; 
} TIM_TimeBaseInitTypeDef; 

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

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

TIM_ClockDivision 設置了時鐘分割。該參數取值如下:

TIM_CKD_DIV1     TDTS = Tck_tim
TIM_CKD_DIV2     TDTS = 2Tck_tim
TIM_CKD_DIV4     TDTS = 4Tck_tim

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 計數模式

函數TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)功能為使能特定的中斷,其中輸入參數TIM_IT為使能或者失能TIM中斷,可以一個或多個值組合,其值如下:

TIM_IT_Update                TIM 中斷源
TIM_IT_CC1 TIM             捕獲/比較 1 中斷源
TIM_IT_CC2 TIM             捕獲/比較 2 中斷源
TIM_IT_CC3 TIM             捕獲/比較 3 中斷源
TIM_IT_CC4 TIM             捕獲/比較 4 中斷源
TIM_IT_Trigger               TIM 觸發中斷源

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved