Пример #1
1
/**
  * @brief Example firmware main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{

  /* Time base configuration */      
  TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);

  /* Prescaler configuration */
  TIM2_PrescalerConfig(TIM2_PRESCALER_2048, TIM2_PSCRELOADMODE_IMMEDIATE);

  /* Output Compare Active Mode configuration: Channel1 */
  /*
	  TIM2_OCMode = TIM2_OCMODE_ACTIVE
       TIM2_OutputState = TIM2_OUTPUTSTATE_ENABLE
       TIM2_Pulse = CCR1_Val
	 TIM2_OCPolarity = TIM2_OCPOLARITY_HIGH
	*/
	TIM2_OC1Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH);
	
  TIM2_OC1PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel2 */
  
  /*TIM2_Pulse = CCR2_Val  */
	
  TIM2_OC2Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC2PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel3 */
  /*
	TIM2_Pulse = CCR3_Val
	*/
  TIM2_OC3Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR3_Val, TIM2_OCPOLARITY_HIGH);
  TIM2_OC3PreloadConfig(DISABLE);
  TIM2_ARRPreloadConfig(ENABLE);

  /* Set PG.6 pin */
  GPIO_Init(GPIOG, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_WriteHigh(GPIOG, GPIO_PIN_6);
  
  /* TIM2 enable counter */
  TIM2_Cmd(ENABLE);

  while (1);  
}
Пример #2
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); 
}
Пример #3
0
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);
	
}
Пример #4
0
Файл: buz.c Проект: wantf/C
void BuzzerStart(void)
{
/*
		TIM2_DeInit();
		TIM2_TimeBaseInit(TIM2_PRESCALER_16,u8BzrFrqBuf);
		TIM2_ARRPreloadConfig(ENABLE);
		TIM2_Cmd(ENABLE);
		TIM2_ITConfig(TIM2_IT_UPDATE,ENABLE);
*/
		TIM2_DeInit(); 
		TIM2_TimeBaseInit(TIM2_PRESCALER_16,u8BzrFrqBuf ); 
#ifdef	NEW_260		
		TIM2_CCxCmd(TIM2_CHANNEL_3, ENABLE); 
		TIM2_OC3Init(TIM2_OCMODE_TOGGLE, TIM2_OUTPUTSTATE_ENABLE, 64, TIM2_OCPOLARITY_LOW); 
		TIM2_OC3PreloadConfig(ENABLE); 
#else
		TIM2_CCxCmd(TIM2_CHANNEL_2, ENABLE); 
		TIM2_OC2Init(TIM2_OCMODE_TOGGLE, TIM2_OUTPUTSTATE_ENABLE, 64, TIM2_OCPOLARITY_LOW); 
		TIM2_OC2PreloadConfig(ENABLE);
#endif
		TIM2_ARRPreloadConfig(ENABLE); 
		TIM2_ITConfig(TIM2_IT_CC1, DISABLE); 
		TIM2_ITConfig(TIM2_IT_CC2, DISABLE); 
		TIM2_ITConfig(TIM2_IT_CC3, DISABLE); 
		TIM2_ITConfig(TIM2_IT_UPDATE, DISABLE); 
		TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE); 
		TIM2_Cmd(ENABLE);

		SetBuzzerEnOn();
}
Пример #5
0
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); 
}
Пример #6
0
void InitTimer(void)
{
  clk_config();
  TIM2_DeInit();
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
  TIM2_TimeBaseInit(TIM2_Prescaler_1, TIM2_CounterMode_Up, 500);
  TIM2_Cmd(ENABLE);
}
Пример #7
0
inline void
vMBPortTimersDisable(  )
{
    /* Disable any pending timers. */
  
    TIM2_ITConfig(TIM2_IT_UPDATE, DISABLE);
    TIM2_Cmd(DISABLE);
}
Пример #8
0
/*
    Configure TIM2 to interrupt every 10ms
  */
void InitTimer()
{
  TIM2_DeInit();
  TIM2_TimeBaseInit(TIM2_PRESCALER_32768,      // Interrupt every 32768 clock pulses.
                    5);                        // 16Mhz / 32768 = 488 -> every 2ms -> ARR=5 -> every 10ms
  TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);
  TIM2_Cmd(ENABLE);
}
Пример #9
0
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);
}
Пример #10
0
void timer_init()
{
  TIM2_DeInit();
  TIM2_TimeBaseInit(TIM2_PRESCALER_1, 1600);
  //TIM2_PrescalerConfig(TIM2_PRESCALER_32768, TIM2_PSCRELOADMODE_IMMEDIATE);
  TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);
  
  ITC_SetSoftwarePriority(ITC_IRQ_TIM2_OVF, ITC_PRIORITYLEVEL_1);  
  TIM2_Cmd(ENABLE);
}
Пример #11
0
void setTimeoutCheck(Mod_Timer_Check_TypeDef act)
{
	if (act == MOD_TIMER_START)
	{
		TIM2_Cmd(DISABLE);
		TIM2_SetCounter(0);
		TIM2_Cmd(ENABLE);
		modInts.timeout_int_en = TRUE;
	} else if (act == MOD_TIMER_PAUSE) {
		TIM2_Cmd(DISABLE);
		modInts.timeout_int_en = FALSE;
	} else if (act == MOD_TIMER_RESUM) {
		TIM2_Cmd(ENABLE);
		modInts.timeout_int_en = TRUE;
	} else if (act == MOD_TIMER_STOP) {
		TIM2_Cmd(DISABLE);
		modInts.timeout_int_en = FALSE;
	}
}
Пример #12
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);
}
Пример #13
0
/**
  * @brief Включить таймер № 2.
  * @par
  * Параметры отсутствуют
  * @retval
  * Возвращаемое значение отсутствует
*/
void CounterTimerStart(void)
{
  TIM2_DeInit();
  
  TIM2_TimeBaseInit(TIM2_PRESCALER_32768, 610);
  
  TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);  
  
  TIM2_Cmd(ENABLE); 
}
Пример #14
0
Файл: buz.c Проект: wantf/C
void BuzzerStop(void)
{
		TIM2_Cmd(DISABLE);
//		TIM2_ITConfig(TIM2_IT_UPDATE,DISABLE);
		SetBuzzerEnOff();
		u8BzrFrqBuf = 0;
		u8OutState  &= (u8)(~BuzWork);
		u8BzrOn5MSCnt = 0;
		u8BzrOff5MSCnt = 0;
		
}
Пример #15
0
 void tim2_on(void)
{
   TIM2_TimeBaseInit(TIM2_Prescaler_2,TIM2_CounterMode_Up,0x0800);
   TIM2_OC1Init(TIM2_OCMode_PWM2,TIM2_OutputState_Enable,0x0400,TIM2_OCPolarity_High,TIM2_OCIdleState_Set);
   TIM2_OC2Init(TIM2_OCMode_PWM2,TIM2_OutputState_Enable,0x0400,TIM2_OCPolarity_Low ,TIM2_OCIdleState_Set); 
   TIM2_CCxCmd(TIM2_Channel_1,ENABLE);
   TIM2_CCxCmd(TIM2_Channel_2,ENABLE);
   TIM2_BKRConfig(TIM2_OSSIState_Enable,TIM2_LockLevel_Off,TIM2_BreakState_Disable,TIM2_BreakPolarity_High,TIM2_AutomaticOutput_Enable);
   TIM2_ITConfig(TIM2_IT_CC1,ENABLE);
   TIM2_ITConfig(TIM2_IT_CC2,DISABLE);
   TIM2_Cmd(ENABLE);
};
/* 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);
}
Пример #17
0
/*******************************************************************************
*                           ==定时器2初始化函数==
* TIM2_DeInit();                                 --> 初始化定时器2寄存器
* TIM2_TimeBaseInit(TIM2_PRESCALER_1, 224);      --> 定时器2基本初始化 设置 分频系数 , 初值
                                                  --> ( 无分频 , 7372800 / 32768 = 225 校准为224 )
* TIM2_OC1Init(TIM2_OCMODE_PWM1 , TIM2_OUTPUTSTATE_ENABLE , 112 , TIM2_OCPOLARITY_HIGH);
                                                  --> 定时器2输出方式 为PWM1 , 定时器2输出状态使能 , 输出占空比 50% , 输出起始电平 为高
* TIM2_Cmd(ENABLE);                              --> 启动定时器
*******************************************************************************/
void TIME2_INIT(void)
{
	//	TIM2_DeInit();
	TIM2_TimeBaseInit(TIM2_PRESCALER_2, 1000);
	TIM2_OC3Init(TIM2_OCMODE_PWM1 , 
	TIM2_OUTPUTSTATE_ENABLE , 
	0 , 
	TIM2_OCPOLARITY_HIGH);
	//	TIM2_OC3PreloadConfig(ENABLE);
	//	TIM1_CtrlPWMOutputs(ENABLE);
	TIM2->CCMR3 |= (uint8_t)TIM2_CCMR_OCxPE;
	TIM1->BKR |= TIM1_BKR_MOE;
	TIM2->CR1 |= (uint8_t)TIM2_CR1_CEN;
	TIM2_Cmd(ENABLE);
}	
Пример #18
0
/**
  * @brief Example firmware main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{

  /* Time base configuration */
  TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);

  /* Prescaler configuration */
  TIM2_PrescalerConfig(TIM2_PRESCALER_2048, TIM2_PSCRELOADMODE_IMMEDIATE);

  /* Output Compare Active Mode configuration: Channel1 */
  /*
	  TIM2_OCMode = TIM2_OCMODE_INACTIVE
       TIM2_OCPolarity = TIM2_OCPOLARITY_HIGH
       TIM2_Pulse = CCR1_Val
	*/
  TIM2_OC1Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC1PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel2 */
  
  /*TIM2_Pulse = CCR2_Val;  */
  TIM2_OC2Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC2PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel3 */
  /*TIM2_Pulse = CCR3_Val  */
  TIM2_OC3Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR3_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC3PreloadConfig(DISABLE);

  TIM2_ARRPreloadConfig(ENABLE);
  
  /* TIM IT enable */
  TIM2_ITConfig(TIM2_IT_CC1, ENABLE);
  TIM2_ITConfig(TIM2_IT_CC2, ENABLE);
  TIM2_ITConfig(TIM2_IT_CC3, ENABLE);

  /* Set pin PG.5 & PG.6 & PG.7 to high state */
  GPIO_Init(GPIOG, (GPIO_PIN_5|GPIO_PIN_6| GPIO_PIN_7), GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_WriteHigh(GPIOG, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
  
  /* TIM2 enable counter */
  TIM2_Cmd(ENABLE);
	
  enableInterrupts();

  while (1);
}
Пример #19
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);
}
Пример #20
0
/**
  * @brief  Configure Output Compare Active Mode for TIM2 Channel1, Channel2 and 
  *         channel3  
  * @param  None
  * @retval None
  */
static void TIM2_Config(void)
{
  /* Time base configuration */
  TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);

  /* Prescaler configuration */
  TIM2_PrescalerConfig(TIM2_PRESCALER_2048, TIM2_PSCRELOADMODE_IMMEDIATE);

  /* Output Compare Active Mode configuration: Channel1 */
  /*
	  TIM2_OCMode = TIM2_OCMODE_INACTIVE
       TIM2_OCPolarity = TIM2_OCPOLARITY_HIGH
       TIM2_Pulse = CCR1_Val
	*/
  TIM2_OC1Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC1PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel2 */
  
  /*TIM2_Pulse = CCR2_Val;  */
  TIM2_OC2Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC2PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel3 */
  /*TIM2_Pulse = CCR3_Val  */
  TIM2_OC3Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR3_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC3PreloadConfig(DISABLE);

  TIM2_ARRPreloadConfig(ENABLE);
  
  /* TIM IT enable */
  TIM2_ITConfig(TIM2_IT_CC1, ENABLE);
  TIM2_ITConfig(TIM2_IT_CC2, ENABLE);
  TIM2_ITConfig(TIM2_IT_CC3, ENABLE);
  
  /* TIM2 enable counter */
  TIM2_Cmd(ENABLE);
}
Пример #21
0
//Modbus Initialization
void Modbus_Init(void)
{
//Clock divider equals 1.Clock 16MHz
	CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
//Clear bits 
	TIM2_DeInit();
	GPIO_DeInit(GPIOA);
	UART2_DeInit();
//Peripetial Initialization
	TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 78);
	GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
	UART2_Init(BAUDRATE, UART2_WORDLENGTH_8D, UART2_STOPBITS_2,UART2_PARITY_NO,UART2_SYNCMODE_CLOCK_DISABLE,UART2_MODE_TXRX_ENABLE );  
//Enable Periphs
	TIM2_Cmd(ENABLE);
	UART2_Cmd(ENABLE);
//Interrupt configuration
	TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);
	UART2_ITConfig(UART2_IT_RXNE_OR, ENABLE);
#ifndef __DELAY_EN
	#define __MODBUS_EN
	enableInterrupts();
#endif
}
Пример #22
0
/**
  * @brief  Configure TIM1,2,3 peripherals 
  * @param  None
  * @retval None
  */
static void TIM_Config(void)
{
  /* TIM1 configuration:
   - TIM1CLK is set to 2 MHz, the TIM2 Prescaler is equal to 15 so the TIM1 counter
   clock used is 2 MHz / (15 + 1) = 125 000 Hz
   - TIM1 Channel 1 output frequency = TIM1CLK / (TIM1_PERIOD + 1) * (TIM1_PRESCALER + 1)
                                    = 2 000 000 / 256 * 16 = 488.28 Hz */
  /* Time Base configuration */
  TIM1_TimeBaseInit(TIM1_PRESCALER, TIM1_CounterMode_Up, TIM1_PERIOD, TIM1_REPETITION_COUNTER);

  /* TIM1 Channel 1 Configuration in PWM2 mode */
  TIM1_OC1Init(TIM1_OCMode_PWM2, TIM1_OutputState_Enable, TIM1_OutputNState_Disable, TIM1_CCR1_VAL,
               TIM1_OCPolarity_Low, TIM1_OCNPolarity_Low, TIM1_OCIdleState_Set, TIM1_OCNIdleState_Set);

  /* Master Mode selection: Update event */
  TIM1_SelectOutputTrigger(TIM1_TRGOSource_Update);

  /* TIM2 configuration:
   - TIM2 is connected to TIM1 Update so TIM2CLK is equal to 
     TIM1 output clock / (TIM1_REPETITION_COUNTER + 1) = 488.28 / 5 = 97.65 Hz
    - TIM2 Prescaler is equal to 1 so the TIM2 counter clock used is 97.65 / 1 = 97.65 Hz
    - TIM2 Channel 1 output frequency = TIM2CLK / (TIM2_PERIOD + 1) * TIM2_Prescaler
                                     = 97.65 / 3 * 1 = 32.55 Hz */
  /* Time Base configuration */
  TIM2_TimeBaseInit(TIM2_Prescaler_1, TIM2_CounterMode_Up, TIM2_PERIOD);

  TIM2_OC1Init(TIM2_OCMode_PWM2, TIM2_OutputState_Enable, TIM2_CCR1_VAL,
               TIM2_OCPolarity_Low, TIM2_OCIdleState_Reset);

  /* TIM2 Slave Mode selection: Gated mode */
  TIM2_SelectSlaveMode(TIM2_SlaveMode_Gated);
  TIM2_SelectInputTrigger(TIM2_TRGSelection_TIM1);

  /* TIM3 configuration:
   - TIM3 is connected to TIM1 Update so TIM3CLK is equal to 
     TIM1 output clock / (TIM1_REPETITION_COUNTER + 1) = 488.28 / 5 = 97.65 Hz
    - TIM3 Prescaler is equal to 1 so the TIM3 counter clock used is 97.65 / 1 = 97.65 Hz
    - TIM3 Channel 1 output frequency = TIM3CLK / (TIM3_PERIOD + 1) * TIM3Prescaler
                                     = 97.65 / 4 * 1 = 24.41 Hz */
  /* Time Base configuration */
  TIM3_TimeBaseInit(TIM3_Prescaler_1, TIM3_CounterMode_Up, TIM3_PERIOD);

  TIM3_OC1Init(TIM3_OCMode_PWM2, TIM3_OutputState_Enable, TIM3_CCR1_VAL,
               TIM3_OCPolarity_Low, TIM3_OCIdleState_Reset);

  /* TIM3 Slave Mode selection: Gated mode */
  TIM3_SelectSlaveMode(TIM3_SlaveMode_Gated);
  TIM3_SelectInputTrigger(TIM3_TRGSelection_TIM1);

  /* Main Output Enable */
  TIM1_CtrlPWMOutputs(ENABLE);
  TIM2_CtrlPWMOutputs(ENABLE);
  TIM3_CtrlPWMOutputs(ENABLE);

  /* TIM2 counter enable */
  TIM2_Cmd(ENABLE);
  /* TIM3 counter enable */
  TIM3_Cmd(ENABLE);
  /* TIM1 counter enable */
  TIM1_Cmd(ENABLE);
}
Пример #23
0
void Config()
{
  //System clock at power up is HSI/8 = 16MHz/8 = 2MHz
  //CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);  //set HSI/4 = 4MHz SysClk to Core and Memory, minimum clock = 125KHz for CLK_SYSCLKDiv_128
  //PWR_PVDCmd(ENABLE);  //Power voltage detector and brownout Reset unit supply current 2,6uA
  //PWR_PVDLevelConfig(PWR_PVDLevel_2V26); //set Programmable voltage detector threshold to 2,26V
  //PWR_GetFlagStatus(PWR_FLAG_PVDOF);  //checks whether the specified PWR flag is set or not
  
  //Configure external interrupts - BTN1 and BTN2 presses
  //EXTI_SetPinSensitivity(EXTI_Pin_2, EXTI_Trigger_Falling_Low);
  //EXTI_SetPinSensitivity(EXTI_Pin_4, EXTI_Trigger_Falling_Low);
  //EXTI_SelectPort(EXTI_Port_B);
  //EXTI_SetHalfPortSelection(EXTI_HalfPort_B_MSB, ENABLE);
  
  // Timer 4 Configuration
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);   // 8bit: used for system periodic flags and timeouts
  TIM4_TimeBaseInit(TIM4_Prescaler_16, 125);                // Overflow at 1ms, 2MHz/16/125 = 1000
  TIM4_ITConfig(TIM4_IT_Update, ENABLE);
  TIM4_Cmd(ENABLE);

  // Timer 2 Configuration
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);           // 16bit: used for runtime measurement
  TIM2_TimeBaseInit(TIM2_Prescaler_2, TIM2_CounterMode_Up, 0xFFFF); // timebase of 1us, 2MHz/2=1M
  TIM2_Cmd(ENABLE);
  
  // Timer3 Configuration
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE);
  TIM3_TimeBaseInit(TIM3_Prescaler_2, TIM3_CounterMode_Up, 0xFFFF);  // 1us timebase @ 2MHz system clock
  TIM3_ICInit(TIM3_Channel_2,
              TIM3_ICPolarity_Falling,
              TIM3_ICSelection_IndirectTI,
              TIM3_ICPSC_Div1,
              0);
  TIM3_ICInit(TIM3_Channel_1,
              TIM3_ICPolarity_Rising,
              TIM3_ICSelection_DirectTI,
              TIM3_ICPSC_Div1,
              0);
  TIM3_SelectInputTrigger(TIM3_TRGSelection_TI1FP1);
  TIM3_SelectSlaveMode(TIM3_SlaveMode_Reset);  // Reset timer on selected trigger signal
  TIM3_ITConfig(TIM3_IT_CC1, ENABLE);
  TIM3_ITConfig(TIM3_IT_CC2, ENABLE);
  TIM3_Cmd(ENABLE);
  
  /* Output PP High - bicolor LED to GND */
  GPIO_Init(LED_PORT, LED_PIN1, GPIO_Mode_Out_PP_Low_Slow);
  GPIO_Init(LED_PORT, LED_PIN2, GPIO_Mode_Out_PP_Low_Slow);

  /* Input pull up no IT - onboard Button, external pull-up */
  GPIO_Init(BTN1_PORT, BTN1_PIN, GPIO_Mode_In_FL_No_IT);
  
  /* RFM85W pins */
  GPIO_Init(RFM_DATA_PORT, RFM_DATA_PIN, GPIO_Mode_In_FL_No_IT);
  
  /* DEBUG pin */
  GPIO_Init(DEBUG_PIN_PORT, DEBUG_PIN_PIN, GPIO_Mode_Out_PP_Low_Fast);

  /* H bridge outputs */
  GPIO_Init(PMOS_L_PORT,  PMOS_L_PIN,    GPIO_Mode_Out_PP_High_Fast);
  GPIO_Init(PMOS_R_PORT,  PMOS_R_PIN,    GPIO_Mode_Out_PP_High_Fast);
  GPIO_Init(NMOS_L_PORT,  NMOS_L_PIN,    GPIO_Mode_Out_PP_Low_Fast);
  GPIO_Init(NMOS_R_PORT,  NMOS_R_PIN,    GPIO_Mode_Out_PP_Low_Fast);
}
Пример #24
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
void main(void)
{
  disableInterrupts();
  Config();
  enableInterrupts();
    
  /* Stop used peripheral clocks */
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, DISABLE);  
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, DISABLE);
  LED_OFF;
  /* go to HALT mode */
  halt();
  /* Infinite loop */
  while (1)
  {
    CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv4);    // Set System Clock to 4Mhz
    
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);
    TIM4_TimeBaseInit(TIM4_Prescaler_16, 0xFF);  // 4us delay timebase
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
    TIM2_Cmd(ENABLE);
    disableInterrupts();
    
    TIM2->CCER1 |= TIM_CCER1_CC1E;  // enable PWM output
    delay_tim4(119);
    TIM2->CCER1 &= (uint8_t)(~TIM_CCER1_CC1E);  // disable PWM output
    if(Btn_pressed == 0)
    {
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(100);
    }
    else
    {
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(250);
      delay_tim4(101);
    }
    TIM2->CCER1 |= TIM_CCER1_CC1E;  // enable PWM output
    delay_tim4(119);
    TIM2->CCER1 &= (uint8_t)(~TIM_CCER1_CC1E);  // disable PWM output
    TIM2_Cmd(DISABLE);
    
    enableInterrupts();
    
    LED_ON;
    delay_tim4(80);
    LED_OFF;
    
    /* Stop used peripheral clocks */
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, DISABLE);  
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, DISABLE);
    LED_OFF;
    /* go to HALT mode */
    halt();
  }
}