Facebook
From Filip, 6 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 260
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  Ac6
  5.   * @version V1.0
  6.   * @date    01-December-2013
  7.   * @brief   Default main function.
  8.   ******************************************************************************
  9. */
  10.  
  11.  
  12. #include "stm32f4xx.h"
  13. #include "stm32f4_discovery.h"
  14.  
  15. int main(void)
  16. {
  17.  
  18.          /* GPIOD Periph clock enable */
  19.             RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
  20.  
  21.  
  22.  
  23.     GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_TIM4);
  24.     GPIO_PinAFConfig(GPIOD, GPIO_PinSource13, GPIO_AF_TIM4);
  25.     GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_TIM4);
  26.     GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_TIM4);
  27.  
  28.     GPIO_InitTypeDef  GPIO_InitStructure;
  29.     /* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */
  30.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
  31.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  32.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  33.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  34.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  35.     GPIO_Init(GPIOD, &GPIO_InitStructure);
  36.  
  37.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  38.    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  39.  
  40.     TIM_OCInitTypeDef TIM_OCInitStructure12;
  41.  
  42.             /* PWM1 Mode configuration: */
  43.  
  44.             TIM_OCInitStructure12.TIM_OCMode = TIM_OCMode_PWM1;
  45.  
  46.             TIM_OCInitStructure12.TIM_OutputState = TIM_OutputState_Enable;
  47.  
  48.             TIM_OCInitStructure12.TIM_Pulse = 0;
  49.  
  50.             TIM_OCInitStructure12.TIM_OCPolarity = TIM_OCPolarity_High;
  51.  
  52.             TIM_OCInitTypeDef TIM_OCInitStructure13;
  53.  
  54.                             /* PWM1 Mode configuration: */
  55.  
  56.                             TIM_OCInitStructure13.TIM_OCMode = TIM_OCMode_PWM1;
  57.  
  58.                             TIM_OCInitStructure13.TIM_OutputState = TIM_OutputState_Enable;
  59.  
  60.                             TIM_OCInitStructure13.TIM_Pulse = 0;
  61.  
  62.                             TIM_OCInitStructure13.TIM_OCPolarity = TIM_OCPolarity_High;
  63.  
  64.                             TIM_OCInitTypeDef TIM_OCInitStructure14;
  65.  
  66.                                             /* PWM1 Mode configuration: */
  67.  
  68.                                             TIM_OCInitStructure14.TIM_OCMode = TIM_OCMode_PWM1;
  69.  
  70.                                             TIM_OCInitStructure14.TIM_OutputState = TIM_OutputState_Enable;
  71.  
  72.                                             TIM_OCInitStructure14.TIM_Pulse = 0;
  73.  
  74.                                             TIM_OCInitStructure14.TIM_OCPolarity = TIM_OCPolarity_High;
  75.  
  76.                                             TIM_OCInitTypeDef TIM_OCInitStructure15;
  77.  
  78.                                                             /* PWM1 Mode configuration: */
  79.  
  80.                                                             TIM_OCInitStructure15.TIM_OCMode = TIM_OCMode_PWM1;
  81.  
  82.                                                             TIM_OCInitStructure15.TIM_OutputState = TIM_OutputState_Enable;
  83.  
  84.                                                             TIM_OCInitStructure15.TIM_Pulse = 0;
  85.  
  86.                                                             TIM_OCInitStructure15.TIM_OCPolarity = TIM_OCPolarity_High;
  87.  
  88.  
  89.  
  90.  
  91.         /* Time base configuration */
  92.  
  93.         TIM_TimeBaseStructure.TIM_Period = 99;
  94.  
  95.         TIM_TimeBaseStructure.TIM_Prescaler = 4999;
  96.  
  97.         TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  98.  
  99.         TIM_TimeBaseStructure.TIM_CounterMode =  TIM_CounterMode_Up;
  100.  
  101.         TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
  102.  
  103.     TIM_OC1Init(TIM4, &TIM_OCInitStructure12);
  104.     TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
  105.  
  106.     TIM_OC2Init(TIM4, &TIM_OCInitStructure13);
  107.     TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
  108.  
  109.     TIM_OC3Init(TIM4, &TIM_OCInitStructure14);
  110.      TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
  111.  
  112.       TIM_OC4Init(TIM4, &TIM_OCInitStructure15);
  113.       TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
  114.  
  115.  
  116.  
  117.  
  118. //    TIM4->CCR1 = 5;
  119. //    TIM4->CCR2 = 2;
  120. //    TIM4->CCR3 = 4;
  121. //    TIM4->CCR4 = 7;
  122.  
  123.     TIM_Cmd(TIM4, ENABLE);
  124.  
  125.     for(;;)
  126.     {
  127.         for(int i = 1; i <99 ; i++) {
  128.  
  129.                 //TIM4->CCR1 = i;
  130.                 TIM4->CCR2 = i;
  131.                 //TIM4->CCR3 = i;
  132.                 //TIM4->CCR4 = i;
  133.                 for (int j=0;j<100000;j++);
  134.  
  135.                 //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  136.  
  137.  
  138.         }
  139.  
  140.         for(int i = 99; i > 1 ; i--) {
  141.  
  142.                                 //TIM4->CCR1 = i;
  143.                                 TIM4->CCR2 = i;
  144.                                 //TIM4->CCR3 = i;
  145.                                 //TIM4->CCR4 = i;
  146.                                 for (int j=0;j<100000;j++);
  147.  
  148.                                 //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  149.  
  150.                         }
  151.  
  152.         for(int i = 1; i <99 ; i++) {
  153.  
  154.                         TIM4->CCR1 = i;
  155.                         //TIM4->CCR2 = i;
  156.                         //TIM4->CCR3 = i;
  157.                         //TIM4->CCR4 = i;
  158.                         for (int j=0;j<100000;j++);
  159.  
  160.                         //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  161.  
  162.  
  163.                 }
  164.  
  165.         for(int i = 99; i > 1 ; i--) {
  166.  
  167.                                         TIM4->CCR1 = i;
  168.                                         //TIM4->CCR2 = i;
  169.                                         //TIM4->CCR3 = i;
  170.                                         //TIM4->CCR4 = i;
  171.                                         for (int j=0;j<100000;j++);
  172.  
  173.                                         //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  174.  
  175.                                 }
  176.  
  177.         for(int i = 1; i <99 ; i++) {
  178.  
  179.                         //TIM4->CCR1 = i;
  180.                         //TIM4->CCR2 = i;
  181.                         TIM4->CCR3 = i;
  182.                         //TIM4->CCR4 = i;
  183.                         for (int j=0;j<100000;j++);
  184.  
  185.                         //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  186.  
  187.  
  188.                 }
  189.  
  190.  
  191.         for(int i = 99; i > 1 ; i--) {
  192.  
  193.                                         //TIM4->CCR1 = i;
  194.                                         //TIM4->CCR2 = i;
  195.                                         TIM4->CCR3 = i;
  196.                                         //TIM4->CCR4 = i;
  197.                                         for (int j=0;j<100000;j++);
  198.  
  199.                                         //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  200.  
  201.                                 }
  202.         for(int i = 1; i <99 ; i++) {
  203.  
  204.                         //TIM4->CCR1 = i;
  205.                         //TIM4->CCR2 = i;
  206.                         //TIM4->CCR3 = i;
  207.                         TIM4->CCR4 = i;
  208.                         for (int j=0;j<100000;j++);
  209.  
  210.                         //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  211.  
  212.  
  213.                 }
  214.  
  215.  
  216.  
  217.  
  218.         for(int i = 99; i > 1 ; i--) {
  219.  
  220.                                 //TIM4->CCR1 = i;
  221.                                 //TIM4->CCR2 = i;
  222.                                 //TIM4->CCR3 = i;
  223.                                 TIM4->CCR4 = i;
  224.                                 for (int j=0;j<100000;j++);
  225.  
  226.                                 //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  227.  
  228.                         }
  229.  
  230.  
  231.         //for (i=0;i<1000000;i++);
  232.         //GPIO_ResetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
  233.         //for (i=0;i<1000000;i++);
  234.     }
  235. }