static void TIM2_Config(void) { /* Enable TIM2 CLK */ CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE); /* Capture only every 8 events!!! */ /* Enable capture of TIM2 */ TIM2_ICInit(TIM2_Channel_1, TIM2_ICPolarity_Falling, TIM2_ICSelection_DirectTI, TIM2_ICPSC_Div8, 0); /* Enable timer1 */ TIM2_Cmd(ENABLE); /* Config Channel 1 pin*/ GPIO_Init(GPIOB, GPIO_Pin_0, GPIO_Mode_In_PU_No_IT); /* Clear CC1 Flag*/ TIM2_ClearFlag(TIM2_FLAG_CC1); /* wait a Capture on CC1 */ while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1); /* Get CCR1 value*/ ICValue1 = TIM2_GetCapture1(); /* Clear CC1 Flag*/ TIM2_ClearFlag(TIM2_FLAG_CC1); /* wait a capture on cc1 */ while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1); /* Get CCR1 value*/ ICValue2 = TIM2_GetCapture1(); TIM2_ClearFlag(TIM2_FLAG_CC1); }
void MOD_TIM_Config(Mod_Master_Frame_TypeDef* aFrame) { TIM2_DeInit(); TIM2_TimeBaseInit(0x0F, 1500); //2ms comm response time TIM2_UpdateRequestConfig(TIM2_UPDATESOURCE_REGULAR); TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE); TIM2_Cmd(DISABLE); TIM2_ClearITPendingBit(TIM2_IT_UPDATE); TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); TIM2_ClearFlag(TIM2_FLAG_UPDATE); TIM4_DeInit(); TIM4_TimeBaseInit(0x07, 126); //128 * 126 = 16128 = 2ms (8MHz), frame check TIM4_UpdateRequestConfig(TIM4_UPDATESOURCE_REGULAR); TIM4_GenerateEvent(TIM4_EVENTSOURCE_UPDATE); TIM4_Cmd(DISABLE); TIM4_ClearITPendingBit(TIM4_IT_UPDATE); TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE); TIM4_ClearFlag(TIM4_FLAG_UPDATE); }
inline void vMBPortTimersEnable( ) { /* Enable the timer with the timeout passed to xMBPortTimersInit( ) */ TIM2_ClearFlag(TIM2_FLAG_UPDATE); TIM2_SetCounter(0x00); TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); TIM2_Cmd(ENABLE); }
void timerInit(void) { /* TIM2 initial */ TIM2_TimeBaseInit(TIM2_PRESCALER_16,7812); TIM2_ITConfig( TIM2_IT_UPDATE , ENABLE); TIM2_SetCounter(0x0000); /*计时器打开*/ TIM2_Cmd(ENABLE); TIM2_ClearFlag(TIM2_FLAG_UPDATE); }
void __delay_us(uint16_t delay) { delay = delay * 16; uint16_t count = 0; TIM2_ARRPreloadConfig(DISABLE); TIM2_SetAutoreload(delay); TIM2_SetCounter(0); TIM2_Cmd(ENABLE); while(TIM2_GetFlagStatus(TIM2_FLAG_Update) == RESET); TIM2_ClearFlag(TIM2_FLAG_Update); TIM2_Cmd(DISABLE); }
/* Private functions ---------------------------------------------------------*/ void TIM2_Config(void) { /* Time base configuration */ TIM2_TimeBaseInit(TIM2_Prescaler_1,TIM2_CounterMode_Up, 1); /* Clear TIM1 update flag */ TIM2_ClearFlag(TIM2_FLAG_Update); /* Enable update interrupt */ TIM2_ITConfig(TIM2_IT_Update, ENABLE); /* Enable TIM2 */ TIM2_Cmd(ENABLE); }
/* ----------------------- Start implementation -----------------------------*/ BOOL xMBPortTimersInit( USHORT usTim1Timerout50us ) { ENTER_CRITICAL_SECTION(); // f_master = 16 MHz // TIM2 counter clock = f_master / Prescaler = 0.5 MHz // 1 step = 2 us // maximum timeout = 2us * 65535 = 130ms TIM2_DeInit(); TIM2_TimeBaseInit(TIM2_PRESCALER_32, 25 * usTim1Timerout50us); TIM2_ClearFlag(TIM2_FLAG_UPDATE); TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); EXIT_CRITICAL_SECTION(); return TRUE; }
void TIM2_Config(void) { /* TIM2 configuration: - TIM2CLK is set to 16 MHz, the TIM2 Prescaler is equal to 128 so the TIM2 counter clock used is 16 MHz / 512 = 31250 Hz - In this example we need to generate a time base equal to 500 ms so TIM2_PERIOD = (0.5 * 312500 - 1) = 15624 */ /* Time base configuration */ TIM2_TimeBaseInit(TIM2_PRESCALER_512, TIM2_PERIOD); TIM2_ARRPreloadConfig(ENABLE); TIM2_ClearFlag(TIM2_FLAG_UPDATE); /* Enable update interrupt */ TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); /* Enable TIM2 */ TIM2_Cmd(ENABLE); }