Example #1
0
/**
  * @brief  Configure TIM1 to generate 6 Steps PWM signal
  * @param  None
  * @retval None
  */
static void TIM1_Config(void)
{
  /* TIM1 Peripheral Configuration */ 
  TIM1_DeInit();

  /* Time Base configuration */
  TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 4095, 0);

  /* Channel 1, 2 and 3 Configuration in TIMING mode */  
  
  /* TIM1_Pulse = 2047 */
  TIM1_OC1Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
               2047, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
               TIM1_OCNIDLESTATE_SET);  

  /* TIM1_Pulse = 1023 */
  TIM1_OC2Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, 1023,
               TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, 
               TIM1_OCNIDLESTATE_SET); 

  /* TIM1_Pulse = 511 */
  TIM1_OC3Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
               511, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
               TIM1_OCNIDLESTATE_SET); 

  /* Automatic Output enable, Break, dead time and lock configuration*/
  TIM1_BDTRConfig( TIM1_OSSISTATE_ENABLE,  TIM1_LOCKLEVEL_OFF, 1,  TIM1_BREAK_DISABLE,
                   TIM1_BREAKPOLARITY_LOW,  TIM1_AUTOMATICOUTPUT_ENABLE);
  TIM1_CCPreloadControl(ENABLE);
  TIM1_ITConfig(TIM1_IT_COM, ENABLE);

  /* TIM1 counter enable */
  TIM1_Cmd(ENABLE);
}
Example #2
0
/**
  * @brief  Configure TIM1 to allow sine wave generation
  * @param  None
  * @retval None
  */
static void TIM1_Config(void)
{
  TIM1_DeInit();
  /* Time base configuration */
  /*
       TIM1_Period = INIT_TIM1_ARR
          TIM1_Prescaler = 0
       TIM1_RepetitionCounter=0
      */
  TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, INIT_TIM1_ARR, 0);
  
  /* PWM configuration */
  /*
       TIM1_OCMode = TIM1_OCMODE_PWM1
       TIM1_OutputState = TIM1_OUTPUTSTATE_ENABLE
       TIM1_Pulse = INIT_TIM1_CCR1
       TIM1_OCPolarity = TIM1_OCPOLARITY_LOW
  */
  TIM1_OC1Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE,
               INIT_TIM1_CCR1, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, 
               TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_RESET);
  
  /* Update Interrupt Enable */
  TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);
  
  /* ARRPreload Enable */
  TIM1_ARRPreloadConfig(ENABLE);
  
  /* Enable TIM1 */
  TIM1_Cmd(ENABLE);
  
  /* Enable CC1 output*/
  TIM1_CtrlPWMOutputs(ENABLE);
}
Example #3
0
File: workMode.c Project: wantf/C
void initTimer(void)
{
		TIM1_DeInit();
		TIM1_TimeBaseInit(15, TIM1_COUNTERMODE_UP,5000-1, 0);	//5MS
		TIM1_ARRPreloadConfig(ENABLE);
		TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);
		TIM1_Cmd(ENABLE);
}
Example #4
0
/**
  * @brief  Configure TIM1 to generate 3 complementary signals, to insert a 
  *         defined dead time value, to use the break feature and to lock the 
  *         desired parameters
  * @param  None
  * @retval None
  */
static void TIM1_Config(void)
{
  /* TIM1 Peripheral Configuration */ 
  TIM1_DeInit();

  /* Time Base configuration */
	/*
  TIM1_Prescaler = 0
  TIM1_CounterMode = TIM1_COUNTERMODE_UP
  TIM1_Period = 65535
  TIM1_RepetitionCounter = 0
	*/

  TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 65535,0);

  /* Channel 1, 2 and 3 Configuration in PWM mode */
  /*
	TIM1_OCMode = TIM1_OCMODE_PWM2
  TIM1_OutputState = TIM1_OUTPUTSTATE_ENABLE
  TIM1_OutputNState = TIM1_OUTPUTNSTATE_ENABLE
  TIM1_Pulse = CCR1_Val
  TIM1_OCPolarity = TIM1_OCPOLARITY_LOW 
  TIM1_OCNPolarity = TIM1_OCNPOLARITY_LOW        
  TIM1_OCIdleState = TIM1_OCIDLESTATE_SET
  TIM1_OCNIdleState = TIM1_OCIDLESTATE_RESET
	*/
  TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
               CCR1_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_SET,
               TIM1_OCNIDLESTATE_RESET);

  /* TIM1_Pulse = CCR2_Val */
  TIM1_OC2Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
               CCR2_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_SET,
               TIM1_OCNIDLESTATE_RESET);

  /* TIM1_Pulse = CCR3_Val */
	TIM1_OC3Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
               CCR3_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_SET,
               TIM1_OCNIDLESTATE_RESET);

  /* Automatic Output enable, Break, dead time and lock configuration */
  /*
	TIM1_OSSIState = TIM1_OSSISTATE_ENABLE
  TIM1_LockLevel = TIM1_LOCKLEVEL_1
  TIM1_DeadTime = 117
  TIM1_Break = TIM1_BREAK_ENABLE
  TIM1_BreakPolarity = TIM1_BREAKPOLARITY_HIGH
  TIM1_AutomaticOutput = TIM1_AUTOMATICOUTPUT_ENABLE
	*/
	TIM1_BDTRConfig( TIM1_OSSISTATE_ENABLE,  TIM1_LOCKLEVEL_1, 117, TIM1_BREAK_ENABLE,
                   TIM1_BREAKPOLARITY_HIGH, TIM1_AUTOMATICOUTPUT_ENABLE);

  /* TIM1 counter enable */
  TIM1_Cmd(ENABLE);

  /* Main Output Enable */
  TIM1_CtrlPWMOutputs(ENABLE);
}
Example #5
0
void CAN_Node_OW_init(void)
{
    GPIO_Init(OW_PORT, OW_IN, GPIO_MODE_IN_FL_NO_IT); // external pull up
    GPIO_Init(OW_PORT, OW_OUT, GPIO_MODE_OUT_PP_LOW_FAST);
    GPIO_WriteLow(OW_PORT, OW_OUT);

    // Configure TIM1 to run at 1MHz frequency.
    // NOTE assuming master clock frequency is 8MHz.
    TIM1_DeInit();
    TIM1_TimeBaseInit(7, TIM1_COUNTERMODE_UP, 60, 0);
    TIM1_SelectOnePulseMode(TIM1_OPMODE_SINGLE);
}
Example #6
0
/**
  * @brief  Configure TIM1 to generate 7 PWM signals with 4 different duty cycles
  * @param  None
  * @retval None
  */
static void TIM1_Config(void)
{

    TIM1_DeInit();

    /* Time Base configuration */
    /*
    TIM1_Period = 4095
    TIM1_Prescaler = 0
    TIM1_CounterMode = TIM1_COUNTERMODE_UP
    TIM1_RepetitionCounter = 0
    */

    TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 4095, 0);

    /* Channel 1, 2,3 and 4 Configuration in PWM mode */

    /*
    TIM1_OCMode = TIM1_OCMODE_PWM2
    TIM1_OutputState = TIM1_OUTPUTSTATE_ENABLE
    TIM1_OutputNState = TIM1_OUTPUTNSTATE_ENABLE
    TIM1_Pulse = CCR1_Val
    TIM1_OCPolarity = TIM1_OCPOLARITY_LOW
    TIM1_OCNPolarity = TIM1_OCNPOLARITY_HIGH
    TIM1_OCIdleState = TIM1_OCIDLESTATE_SET
    TIM1_OCNIdleState = TIM1_OCIDLESTATE_RESET

    */
    TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
                 CCR1_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
                 TIM1_OCNIDLESTATE_RESET);

    /*TIM1_Pulse = CCR2_Val*/
    TIM1_OC2Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR2_Val,
                 TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
                 TIM1_OCNIDLESTATE_RESET);

    /*TIM1_Pulse = CCR3_Val*/
    TIM1_OC3Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE,
                 CCR3_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET,
                 TIM1_OCNIDLESTATE_RESET);

    /*TIM1_Pulse = CCR4_Val*/
    TIM1_OC4Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, CCR4_Val, TIM1_OCPOLARITY_LOW,
                 TIM1_OCIDLESTATE_SET);

    /* TIM1 counter enable */
    TIM1_Cmd(ENABLE);

    /* TIM1 Main Output Enable */
    TIM1_CtrlPWMOutputs(ENABLE);
}
Example #7
0
void led_on(void)
{
   TIM1_DeInit();
  
  /* TIM1 configuration:
   * TIM1 in PWM mode without output disabled. We only interest in the interrupts.
   * Period of PWM is 1024us; Duty cycle adjustable from 1/16 - 15/16.
   * With 16Mhz clock, we use:
   * TIM1_Period = 16 - 1
   * TIM1_Prescaler = 1024 - 1 
   * TIM1_Pulse = [0..15]
   */  
  TIM1_TimeBaseInit(1023, TIM1_COUNTERMODE_UP, 15, 0);
  /*
  TIM1_OCMode = TIM1_OCMODE_PWM1
  TIM1_OutputState = TIM1_OUTPUTSTATE_DISABLED
  TIM1_OutputNState = TIM1_OUTPUTNSTATE_DISABLED
  TIM1_Pulse = [1..16], change using TIM1_SetCompare1
  TIM1_OCPolarity = TIM1_OCPOLARITY_LOW; Doesn't matter as output is disabled
  TIM1_OCNPolarity = TIM1_OCNPOLARITY_HIGH; Doesn't matter as output is disabled
  TIM1_OCIdleState = TIM1_OCIDLESTATE_SET; Doesn't matter as output is disabled
  TIM1_OCNIdleState = TIM1_OCIDLESTATE_RESET; Doesn't matter as output is disabled
  */
  TIM1_OC1Init
  (
    TIM1_OCMODE_PWM1,
    TIM1_OUTPUTSTATE_DISABLE, TIM1_OUTPUTNSTATE_DISABLE,
    _duty,
    TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH,
    TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET
  ); 
  TIM1_ITConfig((TIM1_IT_TypeDef)(TIM1_IT_UPDATE | TIM1_IT_CC1), ENABLE);
  /* TIM1 Main Output disabled */
  TIM1_CtrlPWMOutputs(DISABLE);  
  /* TIM1 counter enable */
  TIM1_Cmd(ENABLE);
}
Example #8
0
void CAN_Node_OW_deinit(void)
{
    GPIO_Init(OW_PORT, OW_OUT, GPIO_MODE_IN_FL_NO_IT);
    TIM1_DeInit();
}