| /** | |
| ****************************************************************************** | |
| * File Name : TIM.c | |
| * Description : This file provides code for the configuration | |
| * of the TIM instances. | |
| ****************************************************************************** | |
| * @attention | |
| * | |
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |
| * All rights reserved.</center></h2> | |
| * | |
| * This software component is licensed by ST under Ultimate Liberty license | |
| * SLA0044, the "License"; You may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at: | |
| * www.st.com/SLA0044 | |
| * | |
| ****************************************************************************** | |
| */ | |
| /* Includes ------------------------------------------------------------------*/ | |
| #include "tim.h" | |
| #include "gpio_defs.h" | |
| /* USER CODE BEGIN 0 */ | |
| /* USER CODE END 0 */ | |
| TIM_HandleTypeDef htim2; | |
| TIM_HandleTypeDef htim3; | |
| TIM_HandleTypeDef htim4; | |
| TIM_HandleTypeDef htim15; | |
| /* TIM2 init function */ | |
| void MX_TIM2_Init(void) | |
| { | |
| TIM_ClockConfigTypeDef sClockSourceConfig = {0}; | |
| TIM_MasterConfigTypeDef sMasterConfig = {0}; | |
| htim2.Instance = TIM2; | |
| htim2.Init.Prescaler = 24000; | |
| htim2.Init.CounterMode = TIM_COUNTERMODE_UP; | |
| htim2.Init.Period = 10000; | |
| htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |
| htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |
| if (HAL_TIM_Base_Init(&htim2) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | |
| if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | |
| sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | |
| if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| } | |
| /* TIM3 init function */ | |
| void MX_TIM3_Init(void) | |
| { | |
| TIM_ClockConfigTypeDef sClockSourceConfig = {0}; | |
| TIM_MasterConfigTypeDef sMasterConfig = {0}; | |
| TIM_OC_InitTypeDef sConfigOC = {0}; | |
| htim3.Instance = TIM3; | |
| htim3.Init.Prescaler = 100; | |
| htim3.Init.CounterMode = TIM_COUNTERMODE_UP; | |
| htim3.Init.Period = 10000; | |
| htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |
| htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |
| if (HAL_TIM_Base_Init(&htim3) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | |
| if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | |
| sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | |
| if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sConfigOC.OCMode = TIM_OCMODE_PWM1; | |
| sConfigOC.Pulse = 0; | |
| sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; | |
| sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; | |
| if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| HAL_TIM_MspPostInit(&htim3); | |
| } | |
| /* TIM4 init function */ | |
| void MX_TIM4_Init(void) | |
| { | |
| TIM_ClockConfigTypeDef sClockSourceConfig = {0}; | |
| TIM_MasterConfigTypeDef sMasterConfig = {0}; | |
| TIM_OC_InitTypeDef sConfigOC = {0}; | |
| htim4.Instance = TIM4; | |
| htim4.Init.Prescaler = 117; | |
| htim4.Init.CounterMode = TIM_COUNTERMODE_UP; | |
| htim4.Init.Period = 10000; | |
| htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |
| htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |
| if (HAL_TIM_Base_Init(&htim4) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | |
| if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | |
| sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | |
| if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sConfigOC.OCMode = TIM_OCMODE_PWM1; | |
| sConfigOC.Pulse = 0; | |
| sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; | |
| sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; | |
| if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| HAL_TIM_MspPostInit(&htim4); | |
| } | |
| /* TIM15 init function */ | |
| void MX_TIM15_Init(void) | |
| { | |
| TIM_ClockConfigTypeDef sClockSourceConfig = {0}; | |
| TIM_MasterConfigTypeDef sMasterConfig = {0}; | |
| TIM_OC_InitTypeDef sConfigOC = {0}; | |
| TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; | |
| htim15.Instance = TIM15; | |
| htim15.Init.Prescaler = 1023; | |
| htim15.Init.CounterMode = TIM_COUNTERMODE_UP; | |
| htim15.Init.Period = 1024; | |
| htim15.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | |
| htim15.Init.RepetitionCounter = 0; | |
| htim15.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | |
| if (HAL_TIM_PWM_Init(&htim15) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | |
| sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | |
| if (HAL_TIMEx_MasterConfigSynchronization(&htim15, &sMasterConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| sConfigOC.OCMode = TIM_OCMODE_PWM1; | |
| sConfigOC.Pulse = 0; | |
| sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW; | |
| sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; | |
| sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; | |
| sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; | |
| sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; | |
| if (HAL_TIM_PWM_ConfigChannel(&htim15, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| __HAL_TIM_DISABLE_OCxPRELOAD(&htim15, TIM_CHANNEL_1); | |
| sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; | |
| sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; | |
| sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; | |
| sBreakDeadTimeConfig.DeadTime = 0; | |
| sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; | |
| sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; | |
| sBreakDeadTimeConfig.BreakFilter = 0; | |
| sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; | |
| if (HAL_TIMEx_ConfigBreakDeadTime(&htim15, &sBreakDeadTimeConfig) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| HAL_TIM_MspPostInit(&htim15); | |
| } | |
| void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) | |
| { | |
| if(tim_baseHandle->Instance==TIM2) | |
| { | |
| /* USER CODE BEGIN TIM2_MspInit 0 */ | |
| /* USER CODE END TIM2_MspInit 0 */ | |
| /* TIM2 clock enable */ | |
| __HAL_RCC_TIM2_CLK_ENABLE(); | |
| /* TIM2 interrupt Init */ | |
| __HAL_TIM_CLEAR_FLAG(tim_baseHandle, TIM_SR_UIF); | |
| HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); | |
| HAL_NVIC_EnableIRQ(TIM2_IRQn); | |
| /* USER CODE BEGIN TIM2_MspInit 1 */ | |
| /* USER CODE END TIM2_MspInit 1 */ | |
| } | |
| else if(tim_baseHandle->Instance==TIM3) | |
| { | |
| /* USER CODE BEGIN TIM3_MspInit 0 */ | |
| /* USER CODE END TIM3_MspInit 0 */ | |
| /* TIM3 clock enable */ | |
| __HAL_RCC_TIM3_CLK_ENABLE(); | |
| /* USER CODE BEGIN TIM3_MspInit 1 */ | |
| /* USER CODE END TIM3_MspInit 1 */ | |
| } | |
| else if(tim_baseHandle->Instance==TIM4) | |
| { | |
| /* USER CODE BEGIN TIM4_MspInit 0 */ | |
| /* USER CODE END TIM4_MspInit 0 */ | |
| /* TIM4 clock enable */ | |
| __HAL_RCC_TIM4_CLK_ENABLE(); | |
| /* USER CODE BEGIN TIM4_MspInit 1 */ | |
| /* USER CODE END TIM4_MspInit 1 */ | |
| } | |
| } | |
| void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle) | |
| { | |
| if(tim_pwmHandle->Instance==TIM15) | |
| { | |
| /* USER CODE BEGIN TIM15_MspInit 0 */ | |
| /* USER CODE END TIM15_MspInit 0 */ | |
| /* TIM15 clock enable */ | |
| __HAL_RCC_TIM15_CLK_ENABLE(); | |
| /* USER CODE BEGIN TIM15_MspInit 1 */ | |
| /* USER CODE END TIM15_MspInit 1 */ | |
| } | |
| } | |
| void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) | |
| { | |
| GPIO_InitTypeDef GPIO_InitStruct = {0}; | |
| if(timHandle->Instance==TIM3) | |
| { | |
| /* USER CODE BEGIN TIM3_MspPostInit 0 */ | |
| /* USER CODE END TIM3_MspPostInit 0 */ | |
| /* USER CODE BEGIN TIM3_MspPostInit 1 */ | |
| __HAL_RCC_GPIOB_CLK_ENABLE(); | |
| HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); // Blue LED | |
| HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); // Red LED | |
| HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4); // Green LED | |
| /* USER CODE END TIM3_MspPostInit 1 */ | |
| } | |
| else if(timHandle->Instance==TIM4) | |
| { | |
| /* USER CODE BEGIN TIM4_MspPostInit 0 */ | |
| /* USER CODE END TIM4_MspPostInit 0 */ | |
| __HAL_RCC_GPIOB_CLK_ENABLE(); | |
| /* USER CODE BEGIN TIM4_MspPostInit 1 */ | |
| HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); | |
| /* USER CODE END TIM4_MspPostInit 1 */ | |
| } | |
| else if(timHandle->Instance==TIM15) | |
| { | |
| /* USER CODE BEGIN TIM15_MspPostInit 0 */ | |
| /* USER CODE END TIM15_MspPostInit 0 */ | |
| __HAL_RCC_GPIOE_CLK_ENABLE(); | |
| /* USER CODE BEGIN TIM15_MspPostInit 1 */ | |
| HAL_TIM_PWM_Start(&htim15, TIM_CHANNEL_1); | |
| /* USER CODE END TIM15_MspPostInit 1 */ | |
| } | |
| } | |
| void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) | |
| { | |
| if(tim_baseHandle->Instance==TIM3) | |
| { | |
| /* USER CODE BEGIN TIM3_MspDeInit 0 */ | |
| /* USER CODE END TIM3_MspDeInit 0 */ | |
| /* Peripheral clock disable */ | |
| __HAL_RCC_TIM3_CLK_DISABLE(); | |
| /* TIM3 interrupt Deinit */ | |
| HAL_NVIC_DisableIRQ(TIM3_IRQn); | |
| /* USER CODE BEGIN TIM3_MspDeInit 1 */ | |
| /* USER CODE END TIM3_MspDeInit 1 */ | |
| } | |
| else if(tim_baseHandle->Instance==TIM4) | |
| { | |
| /* USER CODE BEGIN TIM4_MspDeInit 0 */ | |
| /* USER CODE END TIM4_MspDeInit 0 */ | |
| /* Peripheral clock disable */ | |
| __HAL_RCC_TIM4_CLK_DISABLE(); | |
| /* TIM4 interrupt Deinit */ | |
| HAL_NVIC_DisableIRQ(TIM4_IRQn); | |
| /* USER CODE BEGIN TIM4_MspDeInit 1 */ | |
| /* USER CODE END TIM4_MspDeInit 1 */ | |
| } | |
| else if(tim_baseHandle->Instance==TIM6) | |
| { | |
| /* USER CODE BEGIN TIM6_MspDeInit 0 */ | |
| /* USER CODE END TIM6_MspDeInit 0 */ | |
| /* Peripheral clock disable */ | |
| __HAL_RCC_TIM6_CLK_DISABLE(); | |
| /* TIM6 interrupt Deinit */ | |
| /* USER CODE BEGIN TIM6:TIM6_DAC_IRQn disable */ | |
| /** | |
| * Uncomment the line below to disable the "TIM6_DAC_IRQn" interrupt | |
| * Be aware, disabling shared interrupt may affect other IPs | |
| */ | |
| /* HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn); */ | |
| /* USER CODE END TIM6:TIM6_DAC_IRQn disable */ | |
| /* USER CODE BEGIN TIM6_MspDeInit 1 */ | |
| /* USER CODE END TIM6_MspDeInit 1 */ | |
| } | |
| } | |
| void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle) | |
| { | |
| if(tim_pwmHandle->Instance==TIM15) | |
| { | |
| /* USER CODE BEGIN TIM15_MspDeInit 0 */ | |
| /* USER CODE END TIM15_MspDeInit 0 */ | |
| /* Peripheral clock disable */ | |
| __HAL_RCC_TIM15_CLK_DISABLE(); | |
| /* USER CODE BEGIN TIM15_MspDeInit 1 */ | |
| /* USER CODE END TIM15_MspDeInit 1 */ | |
| } | |
| } | |
| /* USER CODE BEGIN 1 */ | |
| /* USER CODE END 1 */ | |
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |