예제 #1
0
파일: main.c 프로젝트: rijn/HardwareWorks
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); 
}
예제 #2
0
파일: modstm8.c 프로젝트: tigeratgithub/OPX
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);
	
}
예제 #3
0
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);
}
예제 #4
0
파일: bsp.c 프로젝트: HorseMa/contiki
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);
}
예제 #5
0
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);
}
예제 #7
0
/* ----------------------- 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;
}
예제 #8
0
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);
}