|  /********************************************************************************
 * @file TIM/6Steps/main.c
 * @author  MCD Application Team
 * @version  V3.0.0
 * @date  04/06/2009
 * @brief  Main program body
 ******************************************************************************
 * @copy
 *
 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 *
 * <h2><center>© COPYRIGHT 2009 STMicroelectronics</center></h2>
 */
 /* Includes ------------------------------------------------------------------*/#include "stm32f10x.h"
 /** @addtogroup StdPeriph_Examples* @{
 */
 /** @addtogroup TIM_6Steps* @{
 */
 /* Private typedef -----------------------------------------------------------*//* Private define ------------------------------------------------------------*/
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 TIM_OCInitTypeDef  TIM_OCInitStructure;
 TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
 /* Private function prototypes -----------------------------------------------*/void RCC_Configuration(void);
 void GPIO_Configuration(void);
 void NVIC_Configuration(void);
 void TIM2_Configuration(void);
 int A=500;
 
 int B=5000;
 
 
 
 
 /* Private functions ---------------------------------------------------------*/
 /*** @brief  Main program
 * @param  None
 * @retval : None
 */
 int main(void)
 {
 /* System Clocks Configuration */
 RCC_Configuration();
   /* NVIC Configuration */NVIC_Configuration();
   /* GPIO Configuration */GPIO_Configuration();
   /* SysTick Configuration */
 TIM2_Configuration();
 
 
       while (1)
 { }
 
 
 }
 
     void TIM2_Configuration(void){
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 /* TIM2 configuration */
 
 /* Time Base configuration */
 TIM_TimeBaseStructure.TIM_Prescaler = 0;
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
 TIM_TimeBaseStructure.TIM_Period = A;
 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
 
 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
 
 
 
 /* Time Base configuration */
 TIM_TimeBaseStructure.TIM_Prescaler = 0;
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
 TIM_TimeBaseStructure.TIM_Period = B;
 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
 
 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
 
 
 
 /* Time Base configuration */
 TIM_TimeBaseStructure.TIM_Prescaler = 0;
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
 TIM_TimeBaseStructure.TIM_Period =5000;
 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
 
 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
 
 
 
      /* Clear TIM2 update pending flag */TIM_ClearFlag(TIM2, TIM_FLAG_Update);
 /* Clear TIM3 update pending flag */
 TIM_ClearFlag(TIM3, TIM_FLAG_Update);
 /* Clear TIM4 update pending flag */
 TIM_ClearFlag(TIM4, TIM_FLAG_Update);
   /* Enable TIM2 Update interrupt */TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
 /* Enable TIM3 Update interrupt */
 TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
 /* Enable TIM4 Update interrupt */
 TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
 
 
 
 /* TIM2 enable counter */
 TIM_Cmd(TIM2, ENABLE);
 /* TIM3 enable counter */
 TIM_Cmd(TIM3, ENABLE);
 /* TIM4 enable counter */
 TIM_Cmd(TIM4, ENABLE);
   
 }
 /**
 * @brief  Configures the different system clocks.
 * @param  None
 * @retval : None
 */
 void RCC_Configuration(void)
 {
 /* Setup the microcontroller system. Initialize the Embedded Flash Interface,
 initialize the PLL and update the SystemFrequency variable. */
 SystemInit();
 
 /* TIM1, GPIOA and GPIOB clock enable */
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC|
 RCC_APB2Periph_GPIOB, ENABLE);
 
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
 
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
 
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
 
 }
 /*** @brief  Configure the TIM1 Pins.
 * @param  None
 * @retval : None
 */
 void GPIO_Configuration(void)
 {
 GPIO_InitTypeDef GPIO_InitStructure;
   /* GPIOA Configuration: Channel 1, 2 and 3 as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
   /* GPIOB Configuration: Channel 1N, 2N and 3N as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
 GPIO_Init(GPIOB, &GPIO_InitStructure);
   /* GPIOA Configuration: Channel 1, 2 and 3 as alternate function push-pull */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_11;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_Init(GPIOC, &GPIO_InitStructure);
 
 }
   void NVIC_Configuration(void)
 {
 NVIC_InitTypeDef NVIC_InitStructure;
 
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
   /* Enable the TIM2 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
 
 /* Enable the TIM3 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
 NVIC_Init(&NVIC_InitStructure);
 
 /* Enable the TIM4 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
 NVIC_Init(&NVIC_InitStructure);
 
 
 }     void TIM2_IRQHandler(void){
 /* Clear TIM2 update interrupt */
 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
 
 
 GPIO_WriteBit(GPIOC, GPIO_Pin_1, Bit_RESET);
 
 }
 /*** @brief  This function handles TIM3 global interrupt request.
 * @param  None
 * @retval : None
 */
 void TIM3_IRQHandler(void)
 {
 /* Clear TIM3 update interrupt */
 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
 
 GPIO_WriteBit(GPIOC, GPIO_Pin_1, Bit_SET);
 
 } /*** @brief  This function handles TIM4 global interrupt request.
 * @param  None
 * @retval : None
 */
 void TIM4_IRQHandler(void)
 {
 /* Clear TIM4 update interrupt */
 TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
 
 
 A=A+10;
 
 
 
 if(A>5000)
 
 {
 A=100;
 }
 
 
 }
         
 |