Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.21 KB | None | 0 0
  1. /* файл main.c */
  2.  
  3. #include "stm32f4xx_hal.h"
  4. #include <stdint.h>
  5. #include <math.h>
  6. #include "BlinkLed.h"
  7. TIM_HandleTypeDef htim4;
  8. TIM_OC_InitTypeDef sConfigOC1;
  9. TIM_OC_InitTypeDef sConfigOC2;
  10. TIM_OC_InitTypeDef sConfigOC3;
  11. TIM_OC_InitTypeDef sConfigOC4;
  12. void SystemClock_Config(void);
  13. static void MX_GPIO_Init(int);
  14. static void MX_TIM4_Init(void);
  15. int main(void){
  16.     volatile int i = 0;
  17.     volatile int j = 0;
  18.     SystemClock_Config();
  19.   HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
  20.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  21.   MX_GPIO_Init(12);
  22.   MX_GPIO_Init(13);
  23.   MX_GPIO_Init(14);
  24.   MX_GPIO_Init(15);
  25.   MX_TIM4_Init();
  26.     HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
  27.     HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
  28.     HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
  29.     HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
  30.     int up = 0;
  31.     while (1){
  32.     up = 1;
  33.     for(i = 0; i <= 65353 ; i++){
  34.             TIM4->CCR1 = i;
  35.             TIM4->CCR2 = 65353-i;
  36.             if(up){
  37.                 TIM4->CCR3 = 65353-i/2;
  38.                 TIM4->CCR4 = i/2;
  39.             }else{
  40.                 TIM4->CCR3 = i/2;
  41.                 TIM4->CCR4 = 65353-i/2;
  42.             }
  43.             for(j = 0 ; j < 100; j++) __NOP();
  44.         }
  45.         for(i = 65535; i >= 0 ; i--){
  46.             TIM4->CCR1 = i;
  47.             TIM4->CCR2 = 65353-i;
  48.             if(up){
  49.                 TIM4->CCR3 = 65353-(65353-i)*2;
  50.                 TIM4->CCR4 = (65353-i)*2;
  51.             }else{
  52.                 TIM4->CCR3 = (65353-i)*2;
  53.                 TIM4->CCR4 = 65353-(65353-i)*2;
  54.             }
  55.             for(j = 0 ; j < 100; j++) __NOP();
  56.         }
  57.     }
  58. }
  59. void MX_TIM4_Init(void){
  60.   TIM_MasterConfigTypeDef sMasterConfig;
  61.   htim4.Instance = TIM4;
  62.   htim4.Init.Prescaler = 0;
  63.   htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
  64.   htim4.Init.Period = 65535;
  65.   htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  66.   htim4.Init.RepetitionCounter = 0;
  67.   HAL_TIM_PWM_Init(&htim4);
  68.   sConfigOC1.OCMode = TIM_OCMODE_PWM1;
  69.   sConfigOC1.Pulse = 0;
  70.   sConfigOC1.OCPolarity = TIM_OCPOLARITY_HIGH;
  71.   sConfigOC1.OCFastMode = TIM_OCFAST_ENABLE;
  72.   HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC1, TIM_CHANNEL_1);
  73.     sConfigOC2.OCMode = TIM_OCMODE_PWM1;
  74.   sConfigOC2.Pulse = 0;
  75.   sConfigOC2.OCPolarity = TIM_OCPOLARITY_HIGH;
  76.   sConfigOC2.OCFastMode = TIM_OCFAST_ENABLE;
  77.   HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC2, TIM_CHANNEL_2);
  78.     sConfigOC3.OCMode = TIM_OCMODE_PWM1;
  79.   sConfigOC3.Pulse = 0;
  80.   sConfigOC3.OCPolarity = TIM_OCPOLARITY_HIGH;
  81.   sConfigOC3.OCFastMode = TIM_OCFAST_ENABLE;
  82.   HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC3, TIM_CHANNEL_3);
  83.   sConfigOC4.OCMode = TIM_OCMODE_PWM1;
  84.   sConfigOC4.Pulse = 0;
  85.   sConfigOC4.OCPolarity = TIM_OCPOLARITY_HIGH;
  86.   sConfigOC4.OCFastMode = TIM_OCFAST_ENABLE;
  87.   HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC4, TIM_CHANNEL_4);
  88.     sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  89.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
  90.   HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig);
  91. }
  92.  
  93. void MX_GPIO_Init(int pin){
  94.         __TIM4_CLK_ENABLE();
  95.       RCC->AHB1ENR |= BLINK_RCC_MASKx(BLINK_PORT_NUMBER);
  96.       GPIO_InitTypeDef GPIO_InitStructure;
  97.       GPIO_InitStructure.Pin = BLINK_PIN_MASK(pin);
  98.       GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
  99.       GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
  100.       GPIO_InitStructure.Pull = GPIO_NOPULL;
  101.       GPIO_InitStructure.Alternate = GPIO_AF2_TIM4;
  102.       HAL_GPIO_Init(BLINK_GPIOx(BLINK_PORT_NUMBER), &GPIO_InitStructure);
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement