diff --git a/cubemx/output/inverter2/Inc/mxconstants.h b/cubemx/output/inverter2/Inc/mxconstants.h index 56c883d..1fdcbe9 100644 --- a/cubemx/output/inverter2/Inc/mxconstants.h +++ b/cubemx/output/inverter2/Inc/mxconstants.h @@ -41,18 +41,24 @@ /* Private define ------------------------------------------------------------*/ -#define LED2_PIN_Pin GPIO_PIN_4 -#define LED2_PIN_GPIO_Port GPIOE -#define LED3_PIN_Pin GPIO_PIN_5 -#define LED3_PIN_GPIO_Port GPIOE -#define LED4_PIN_Pin GPIO_PIN_6 -#define LED4_PIN_GPIO_Port GPIOE -#define LED_PIN_Pin GPIO_PIN_13 -#define LED_PIN_GPIO_Port GPIOC -#define BridgePolarity_Pin GPIO_PIN_0 -#define BridgePolarity_GPIO_Port GPIOC +#define LED0_Pin GPIO_PIN_4 +#define LED0_GPIO_Port GPIOE +#define LED1_Pin GPIO_PIN_5 +#define LED1_GPIO_Port GPIOE +#define LED2_Pin GPIO_PIN_6 +#define LED2_GPIO_Port GPIOE +#define LED_Pin GPIO_PIN_13 +#define LED_GPIO_Port GPIOC +#define BridgePolarity0_Pin GPIO_PIN_0 +#define BridgePolarity0_GPIO_Port GPIOC +#define BridgePolarity1_Pin GPIO_PIN_1 +#define BridgePolarity1_GPIO_Port GPIOC +#define BridgePolarity2_Pin GPIO_PIN_2 +#define BridgePolarity2_GPIO_Port GPIOC #define ERROR_PIN_Pin GPIO_PIN_10 #define ERROR_PIN_GPIO_Port GPIOB +#define Sync_Pin GPIO_PIN_3 +#define Sync_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ diff --git a/cubemx/output/inverter2/Inc/stm32f1xx_it.h b/cubemx/output/inverter2/Inc/stm32f1xx_it.h index 4fd5431..7bc7632 100644 --- a/cubemx/output/inverter2/Inc/stm32f1xx_it.h +++ b/cubemx/output/inverter2/Inc/stm32f1xx_it.h @@ -54,9 +54,13 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void DMA1_Channel1_IRQHandler(void); void DMA1_Channel5_IRQHandler(void); -void TIM1_CC_IRQHandler(void); +void TIM1_UP_IRQHandler(void); void TIM2_IRQHandler(void); +void TIM4_IRQHandler(void); +void TIM5_IRQHandler(void); +void DMA2_Channel4_5_IRQHandler(void); #ifdef __cplusplus } diff --git a/cubemx/output/inverter2/Src/main.c b/cubemx/output/inverter2/Src/main.c index d4b2000..bb9f381 100644 --- a/cubemx/output/inverter2/Src/main.c +++ b/cubemx/output/inverter2/Src/main.c @@ -42,9 +42,11 @@ RTC_HandleTypeDef hrtc; TIM_HandleTypeDef htim1; TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; TIM_HandleTypeDef htim4; +TIM_HandleTypeDef htim5; DMA_HandleTypeDef hdma_tim2_ch1; +DMA_HandleTypeDef hdma_tim4_ch1; +DMA_HandleTypeDef hdma_tim5_ch2; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ @@ -59,8 +61,8 @@ static void MX_DMA_Init(void); static void MX_RTC_Init(void); static void MX_TIM1_Init(void); static void MX_TIM2_Init(void); -static void MX_TIM3_Init(void); static void MX_TIM4_Init(void); +static void MX_TIM5_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); @@ -95,8 +97,8 @@ int main(void) MX_RTC_Init(); MX_TIM1_Init(); MX_TIM2_Init(); - MX_TIM3_Init(); MX_TIM4_Init(); + MX_TIM5_Init(); /* USER CODE BEGIN 2 */ @@ -206,13 +208,11 @@ static void MX_TIM1_Init(void) TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; - TIM_OC_InitTypeDef sConfigOC; htim1.Instance = TIM1; - htim1.Init.Prescaler = 36; + htim1.Init.Prescaler = 72; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - htim1.Init.Period = 10000; + htim1.Init.Period = 5000; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; if (HAL_TIM_Base_Init(&htim1) != HAL_OK) @@ -226,11 +226,6 @@ static void MX_TIM1_Init(void) Error_Handler(); } - if (HAL_TIM_OC_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) @@ -238,44 +233,6 @@ static void MX_TIM1_Init(void) Error_Handler(); } - 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.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.OCMode = TIM_OCMODE_TOGGLE; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.Pulse = 2000; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.Pulse = 3000; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - - HAL_TIM_MspPostInit(&htim1); - } /* TIM2 init function */ @@ -327,55 +284,6 @@ static void MX_TIM2_Init(void) } -/* TIM3 init function */ -static void MX_TIM3_Init(void) -{ - - TIM_ClockConfigTypeDef sClockSourceConfig; - TIM_MasterConfigTypeDef sMasterConfig; - TIM_OC_InitTypeDef sConfigOC; - - htim3.Instance = TIM3; - htim3.Init.Prescaler = 72; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 5000; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 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 = 2000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - - HAL_TIM_MspPostInit(&htim3); - -} - /* TIM4 init function */ static void MX_TIM4_Init(void) { @@ -413,7 +321,7 @@ static void MX_TIM4_Init(void) } sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 3000; + 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) @@ -425,6 +333,55 @@ static void MX_TIM4_Init(void) } +/* TIM5 init function */ +static void MX_TIM5_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim5.Instance = TIM5; + htim5.Init.Prescaler = 72; + htim5.Init.CounterMode = TIM_COUNTERMODE_UP; + htim5.Init.Period = 5000; + htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + if (HAL_TIM_Base_Init(&htim5) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim5, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_PWM_Init(&htim5) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &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(&htim5, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim5); + +} + /** * Enable DMA controller clock */ @@ -432,11 +389,18 @@ static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); + __HAL_RCC_DMA2_CLK_ENABLE(); /* DMA interrupt init */ + /* DMA1_Channel1_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); /* DMA1_Channel5_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); + /* DMA2_Channel4_5_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA2_Channel4_5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn); } @@ -460,31 +424,31 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, LED0_Pin|LED1_Pin|LED2_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, LED_PIN_Pin|BridgePolarity_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOC, LED_Pin|BridgePolarity0_Pin|BridgePolarity1_Pin|BridgePolarity2_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOB, ERROR_PIN_Pin|Sync_Pin, GPIO_PIN_RESET); - /*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */ - GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin; + /*Configure GPIO pins : LED0_Pin LED1_Pin LED2_Pin */ + GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin|LED2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - /*Configure GPIO pins : LED_PIN_Pin BridgePolarity_Pin */ - GPIO_InitStruct.Pin = LED_PIN_Pin|BridgePolarity_Pin; + /*Configure GPIO pins : LED_Pin BridgePolarity0_Pin BridgePolarity1_Pin BridgePolarity2_Pin */ + GPIO_InitStruct.Pin = LED_Pin|BridgePolarity0_Pin|BridgePolarity1_Pin|BridgePolarity2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pin : ERROR_PIN_Pin */ - GPIO_InitStruct.Pin = ERROR_PIN_Pin; + /*Configure GPIO pins : ERROR_PIN_Pin Sync_Pin */ + GPIO_InitStruct.Pin = ERROR_PIN_Pin|Sync_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(ERROR_PIN_GPIO_Port, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } diff --git a/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c b/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c index 375a46e..276f213 100644 --- a/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c +++ b/cubemx/output/inverter2/Src/stm32f1xx_hal_msp.c @@ -36,6 +36,10 @@ extern DMA_HandleTypeDef hdma_tim2_ch1; +extern DMA_HandleTypeDef hdma_tim4_ch1; + +extern DMA_HandleTypeDef hdma_tim5_ch2; + extern void Error_Handler(void); /* USER CODE BEGIN 0 */ @@ -127,8 +131,8 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* Peripheral clock enable */ __HAL_RCC_TIM1_CLK_ENABLE(); /* Peripheral interrupt init */ - HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); + HAL_NVIC_SetPriority(TIM1_UP_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_UP_IRQn); /* USER CODE BEGIN TIM1_MspInit 1 */ /* USER CODE END TIM1_MspInit 1 */ @@ -165,17 +169,6 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM2_MspInit 1 */ } - else if(htim_base->Instance==TIM3) - { - /* USER CODE BEGIN TIM3_MspInit 0 */ - - /* USER CODE END TIM3_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_TIM3_CLK_ENABLE(); - /* USER CODE BEGIN TIM3_MspInit 1 */ - - /* USER CODE END TIM3_MspInit 1 */ - } else if(htim_base->Instance==TIM4) { /* USER CODE BEGIN TIM4_MspInit 0 */ @@ -183,10 +176,63 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM4_CLK_ENABLE(); + + /* Peripheral DMA init*/ + + hdma_tim4_ch1.Instance = DMA1_Channel1; + hdma_tim4_ch1.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_tim4_ch1.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_tim4_ch1.Init.MemInc = DMA_MINC_ENABLE; + hdma_tim4_ch1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; + hdma_tim4_ch1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + hdma_tim4_ch1.Init.Mode = DMA_CIRCULAR; + hdma_tim4_ch1.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_tim4_ch1) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_CC1],hdma_tim4_ch1); + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM4_IRQn); /* USER CODE BEGIN TIM4_MspInit 1 */ /* USER CODE END TIM4_MspInit 1 */ } + else if(htim_base->Instance==TIM5) + { + /* USER CODE BEGIN TIM5_MspInit 0 */ + + /* USER CODE END TIM5_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM5_CLK_ENABLE(); + + /* Peripheral DMA init*/ + + hdma_tim5_ch2.Instance = DMA2_Channel4; + hdma_tim5_ch2.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_tim5_ch2.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_tim5_ch2.Init.MemInc = DMA_MINC_ENABLE; + hdma_tim5_ch2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; + hdma_tim5_ch2.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + hdma_tim5_ch2.Init.Mode = DMA_CIRCULAR; + hdma_tim5_ch2.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_tim5_ch2) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_CC2],hdma_tim5_ch2); + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(TIM5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM5_IRQn); + /* USER CODE BEGIN TIM5_MspInit 1 */ + + /* USER CODE END TIM5_MspInit 1 */ + } } @@ -194,33 +240,11 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) { GPIO_InitTypeDef GPIO_InitStruct; - if(htim->Instance==TIM1) - { - /* USER CODE BEGIN TIM1_MspPostInit 0 */ - - /* USER CODE END TIM1_MspPostInit 0 */ - /**TIM1 GPIO Configuration - PE9 ------> TIM1_CH1 - PE11 ------> TIM1_CH2 - PE13 ------> TIM1_CH3 - */ - GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - - __HAL_AFIO_REMAP_TIM1_ENABLE(); - - /* USER CODE BEGIN TIM1_MspPostInit 1 */ - - /* USER CODE END TIM1_MspPostInit 1 */ - } - else if(htim->Instance==TIM2) + if(htim->Instance==TIM2) { /* USER CODE BEGIN TIM2_MspPostInit 0 */ /* USER CODE END TIM2_MspPostInit 0 */ - /**TIM2 GPIO Configuration PA0-WKUP ------> TIM2_CH1 */ @@ -233,24 +257,6 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) /* USER CODE END TIM2_MspPostInit 1 */ } - else if(htim->Instance==TIM3) - { - /* USER CODE BEGIN TIM3_MspPostInit 0 */ - - /* USER CODE END TIM3_MspPostInit 0 */ - - /**TIM3 GPIO Configuration - PA6 ------> TIM3_CH1 - */ - GPIO_InitStruct.Pin = GPIO_PIN_6; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USER CODE BEGIN TIM3_MspPostInit 1 */ - - /* USER CODE END TIM3_MspPostInit 1 */ - } else if(htim->Instance==TIM4) { /* USER CODE BEGIN TIM4_MspPostInit 0 */ @@ -271,6 +277,24 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) /* USER CODE END TIM4_MspPostInit 1 */ } + else if(htim->Instance==TIM5) + { + /* USER CODE BEGIN TIM5_MspPostInit 0 */ + + /* USER CODE END TIM5_MspPostInit 0 */ + + /**TIM5 GPIO Configuration + PA1 ------> TIM5_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM5_MspPostInit 1 */ + + /* USER CODE END TIM5_MspPostInit 1 */ + } } @@ -286,7 +310,7 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) __HAL_RCC_TIM1_CLK_DISABLE(); /* Peripheral interrupt DeInit*/ - HAL_NVIC_DisableIRQ(TIM1_CC_IRQn); + HAL_NVIC_DisableIRQ(TIM1_UP_IRQn); /* USER CODE BEGIN TIM1_MspDeInit 1 */ @@ -310,17 +334,6 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM2_MspDeInit 1 */ } - else if(htim_base->Instance==TIM3) - { - /* USER CODE BEGIN TIM3_MspDeInit 0 */ - - /* USER CODE END TIM3_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM3_CLK_DISABLE(); - /* USER CODE BEGIN TIM3_MspDeInit 1 */ - - /* USER CODE END TIM3_MspDeInit 1 */ - } else if(htim_base->Instance==TIM4) { /* USER CODE BEGIN TIM4_MspDeInit 0 */ @@ -328,10 +341,35 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_TIM4_CLK_DISABLE(); + + /* Peripheral DMA DeInit*/ + HAL_DMA_DeInit(htim_base->hdma[TIM_DMA_ID_CC1]); + + /* Peripheral interrupt DeInit*/ + HAL_NVIC_DisableIRQ(TIM4_IRQn); + /* USER CODE BEGIN TIM4_MspDeInit 1 */ /* USER CODE END TIM4_MspDeInit 1 */ } + else if(htim_base->Instance==TIM5) + { + /* USER CODE BEGIN TIM5_MspDeInit 0 */ + + /* USER CODE END TIM5_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM5_CLK_DISABLE(); + + /* Peripheral DMA DeInit*/ + HAL_DMA_DeInit(htim_base->hdma[TIM_DMA_ID_CC2]); + + /* Peripheral interrupt DeInit*/ + HAL_NVIC_DisableIRQ(TIM5_IRQn); + + /* USER CODE BEGIN TIM5_MspDeInit 1 */ + + /* USER CODE END TIM5_MspDeInit 1 */ + } } diff --git a/cubemx/output/inverter2/Src/stm32f1xx_it.c b/cubemx/output/inverter2/Src/stm32f1xx_it.c index 97c547f..120b2da 100644 --- a/cubemx/output/inverter2/Src/stm32f1xx_it.c +++ b/cubemx/output/inverter2/Src/stm32f1xx_it.c @@ -41,8 +41,12 @@ /* External variables --------------------------------------------------------*/ extern DMA_HandleTypeDef hdma_tim2_ch1; +extern DMA_HandleTypeDef hdma_tim4_ch1; +extern DMA_HandleTypeDef hdma_tim5_ch2; extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim2; +extern TIM_HandleTypeDef htim4; +extern TIM_HandleTypeDef htim5; /******************************************************************************/ /* Cortex-M3 Processor Interruption and Exception Handlers */ @@ -186,6 +190,20 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ +/** +* @brief This function handles DMA1 channel1 global interrupt. +*/ +void DMA1_Channel1_IRQHandler(void) +{ + /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */ + + /* USER CODE END DMA1_Channel1_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_tim4_ch1); + /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */ + + /* USER CODE END DMA1_Channel1_IRQn 1 */ +} + /** * @brief This function handles DMA1 channel5 global interrupt. */ @@ -201,17 +219,17 @@ void DMA1_Channel5_IRQHandler(void) } /** -* @brief This function handles TIM1 capture compare interrupt. +* @brief This function handles TIM1 update interrupt. */ -void TIM1_CC_IRQHandler(void) +void TIM1_UP_IRQHandler(void) { - /* USER CODE BEGIN TIM1_CC_IRQn 0 */ + /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - /* USER CODE END TIM1_CC_IRQn 0 */ + /* USER CODE END TIM1_UP_IRQn 0 */ HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_CC_IRQn 1 */ + /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - /* USER CODE END TIM1_CC_IRQn 1 */ + /* USER CODE END TIM1_UP_IRQn 1 */ } /** @@ -228,6 +246,48 @@ void TIM2_IRQHandler(void) /* USER CODE END TIM2_IRQn 1 */ } +/** +* @brief This function handles TIM4 global interrupt. +*/ +void TIM4_IRQHandler(void) +{ + /* USER CODE BEGIN TIM4_IRQn 0 */ + + /* USER CODE END TIM4_IRQn 0 */ + HAL_TIM_IRQHandler(&htim4); + /* USER CODE BEGIN TIM4_IRQn 1 */ + + /* USER CODE END TIM4_IRQn 1 */ +} + +/** +* @brief This function handles TIM5 global interrupt. +*/ +void TIM5_IRQHandler(void) +{ + /* USER CODE BEGIN TIM5_IRQn 0 */ + + /* USER CODE END TIM5_IRQn 0 */ + HAL_TIM_IRQHandler(&htim5); + /* USER CODE BEGIN TIM5_IRQn 1 */ + + /* USER CODE END TIM5_IRQn 1 */ +} + +/** +* @brief This function handles DMA2 channel4 and channel5 global interrupts. +*/ +void DMA2_Channel4_5_IRQHandler(void) +{ + /* USER CODE BEGIN DMA2_Channel4_5_IRQn 0 */ + + /* USER CODE END DMA2_Channel4_5_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_tim5_ch2); + /* USER CODE BEGIN DMA2_Channel4_5_IRQn 1 */ + + /* USER CODE END DMA2_Channel4_5_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/cubemx/output/inverter2/inverter2.ioc b/cubemx/output/inverter2/inverter2.ioc index f71432a..0c0db72 100644 --- a/cubemx/output/inverter2/inverter2.ioc +++ b/cubemx/output/inverter2/inverter2.ioc @@ -1,15 +1,35 @@ #MicroXplorer Configuration settings - do not modify -Dma.Request0=TIM2_CH1 -Dma.RequestsNb=1 -Dma.TIM2_CH1.0.Direction=DMA_MEMORY_TO_PERIPH -Dma.TIM2_CH1.0.Instance=DMA1_Channel5 -Dma.TIM2_CH1.0.MemDataAlignment=DMA_MDATAALIGN_HALFWORD -Dma.TIM2_CH1.0.MemInc=DMA_MINC_ENABLE -Dma.TIM2_CH1.0.Mode=DMA_CIRCULAR -Dma.TIM2_CH1.0.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD -Dma.TIM2_CH1.0.PeriphInc=DMA_PINC_DISABLE -Dma.TIM2_CH1.0.Priority=DMA_PRIORITY_LOW -Dma.TIM2_CH1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.Request0=TIM4_CH1 +Dma.Request1=TIM5_CH2 +Dma.Request2=TIM2_CH1 +Dma.RequestsNb=3 +Dma.TIM2_CH1.2.Direction=DMA_MEMORY_TO_PERIPH +Dma.TIM2_CH1.2.Instance=DMA1_Channel5 +Dma.TIM2_CH1.2.MemDataAlignment=DMA_MDATAALIGN_HALFWORD +Dma.TIM2_CH1.2.MemInc=DMA_MINC_ENABLE +Dma.TIM2_CH1.2.Mode=DMA_CIRCULAR +Dma.TIM2_CH1.2.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD +Dma.TIM2_CH1.2.PeriphInc=DMA_PINC_DISABLE +Dma.TIM2_CH1.2.Priority=DMA_PRIORITY_LOW +Dma.TIM2_CH1.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.TIM4_CH1.0.Direction=DMA_MEMORY_TO_PERIPH +Dma.TIM4_CH1.0.Instance=DMA1_Channel1 +Dma.TIM4_CH1.0.MemDataAlignment=DMA_MDATAALIGN_HALFWORD +Dma.TIM4_CH1.0.MemInc=DMA_MINC_ENABLE +Dma.TIM4_CH1.0.Mode=DMA_CIRCULAR +Dma.TIM4_CH1.0.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD +Dma.TIM4_CH1.0.PeriphInc=DMA_PINC_DISABLE +Dma.TIM4_CH1.0.Priority=DMA_PRIORITY_LOW +Dma.TIM4_CH1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.TIM5_CH2.1.Direction=DMA_MEMORY_TO_PERIPH +Dma.TIM5_CH2.1.Instance=DMA2_Channel4 +Dma.TIM5_CH2.1.MemDataAlignment=DMA_MDATAALIGN_HALFWORD +Dma.TIM5_CH2.1.MemInc=DMA_MINC_ENABLE +Dma.TIM5_CH2.1.Mode=DMA_CIRCULAR +Dma.TIM5_CH2.1.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD +Dma.TIM5_CH2.1.PeriphInc=DMA_PINC_DISABLE +Dma.TIM5_CH2.1.Priority=DMA_PRIORITY_LOW +Dma.TIM5_CH2.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority File.Version=6 KeepUserPlacement=false Mcu.Family=STM32F1 @@ -20,40 +40,42 @@ Mcu.IP3=RTC Mcu.IP4=SYS Mcu.IP5=TIM1 Mcu.IP6=TIM2 -Mcu.IP7=TIM3 -Mcu.IP8=TIM4 +Mcu.IP7=TIM4 +Mcu.IP8=TIM5 Mcu.IPNb=9 Mcu.Name=STM32F103V(C-D-E)Tx Mcu.Package=LQFP100 Mcu.Pin0=PE4 Mcu.Pin1=PE5 -Mcu.Pin10=PE11 -Mcu.Pin11=PE13 -Mcu.Pin12=PB10 -Mcu.Pin13=PD12 -Mcu.Pin14=PA13 -Mcu.Pin15=PA14 +Mcu.Pin10=PA1 +Mcu.Pin11=PB10 +Mcu.Pin12=PD12 +Mcu.Pin13=PA13 +Mcu.Pin14=PA14 +Mcu.Pin15=PB3 Mcu.Pin16=VP_RTC_No_RTC_Output Mcu.Pin17=VP_SYS_VS_Systick Mcu.Pin18=VP_TIM1_VS_ClockSourceINT Mcu.Pin19=VP_TIM2_VS_ClockSourceINT Mcu.Pin2=PE6 -Mcu.Pin20=VP_TIM3_VS_ClockSourceINT -Mcu.Pin21=VP_TIM4_VS_ClockSourceINT +Mcu.Pin20=VP_TIM4_VS_ClockSourceINT +Mcu.Pin21=VP_TIM5_VS_ClockSourceINT Mcu.Pin3=PC13-TAMPER-RTC Mcu.Pin4=OSC_IN Mcu.Pin5=OSC_OUT Mcu.Pin6=PC0 -Mcu.Pin7=PA0-WKUP -Mcu.Pin8=PA6 -Mcu.Pin9=PE9 +Mcu.Pin7=PC1 +Mcu.Pin8=PC2 +Mcu.Pin9=PA0-WKUP Mcu.PinsNb=22 Mcu.UserConstants= Mcu.UserName=STM32F103VCTx MxCube.Version=4.16.1 MxDb.Version=DB.4.0.161 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true +NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true +NVIC.DMA2_Channel4_5_IRQn=true\:0\:0\:false\:false\:true NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true @@ -62,8 +84,10 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true -NVIC.TIM1_CC_IRQn=true\:0\:0\:false\:false\:true +NVIC.TIM1_UP_IRQn=true\:0\:0\:false\:false\:true NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true +NVIC.TIM4_IRQn=true\:0\:0\:false\:false\:true +NVIC.TIM5_IRQn=true\:0\:0\:false\:false\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true OSC_IN.Mode=HSE-External-Oscillator OSC_IN.Signal=RCC_OSC_IN @@ -71,23 +95,35 @@ OSC_OUT.Mode=HSE-External-Oscillator OSC_OUT.Signal=RCC_OSC_OUT PA0-WKUP.Locked=true PA0-WKUP.Signal=S_TIM2_CH1_ETR +PA1.Signal=S_TIM5_CH2 PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO PA14.Mode=Serial_Wire PA14.Signal=SYS_JTCK-SWCLK -PA6.Signal=S_TIM3_CH1 PB10.GPIOParameters=GPIO_Label PB10.GPIO_Label=ERROR_PIN PB10.Locked=true PB10.Signal=GPIO_Output +PB3.GPIOParameters=GPIO_Label +PB3.GPIO_Label=Sync +PB3.Locked=true +PB3.Signal=GPIO_Output PC0.GPIOParameters=GPIO_Label -PC0.GPIO_Label=BridgePolarity +PC0.GPIO_Label=BridgePolarity0 PC0.Locked=true PC0.Signal=GPIO_Output +PC1.GPIOParameters=GPIO_Label +PC1.GPIO_Label=BridgePolarity1 +PC1.Locked=true +PC1.Signal=GPIO_Output PC13-TAMPER-RTC.GPIOParameters=GPIO_Label -PC13-TAMPER-RTC.GPIO_Label=LED_PIN +PC13-TAMPER-RTC.GPIO_Label=LED PC13-TAMPER-RTC.Locked=true PC13-TAMPER-RTC.Signal=GPIO_Output +PC2.GPIOParameters=GPIO_Label +PC2.GPIO_Label=BridgePolarity2 +PC2.Locked=true +PC2.Signal=GPIO_Output PCC.Checker=false PCC.Line=STM32F103 PCC.MCU=STM32F103V(C-D-E)Tx @@ -98,21 +134,18 @@ PCC.Series=STM32F1 PCC.Temperature=25 PCC.Vdd=3.3 PD12.Signal=S_TIM4_CH1 -PE11.Signal=S_TIM1_CH2 -PE13.Signal=S_TIM1_CH3 PE4.GPIOParameters=GPIO_Label -PE4.GPIO_Label=LED2_PIN +PE4.GPIO_Label=LED0 PE4.Locked=true PE4.Signal=GPIO_Output PE5.GPIOParameters=GPIO_Label -PE5.GPIO_Label=LED3_PIN +PE5.GPIO_Label=LED1 PE5.Locked=true PE5.Signal=GPIO_Output PE6.GPIOParameters=GPIO_Label -PE6.GPIO_Label=LED4_PIN +PE6.GPIO_Label=LED2 PE6.Locked=true PE6.Signal=GPIO_Output -PE9.Signal=S_TIM1_CH1 ProjectManager.AskForMigrate=true ProjectManager.BackupPrevious=false ProjectManager.CompilerOptimize=2 @@ -135,7 +168,7 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=SW4STM32 ProjectManager.ToolChainLocation=/home/wn/workspace-stm32/inverter2/cubemx/output/inverter2 ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_DMA_Init-DMA-false,3-MX_RTC_Init-RTC-false,4-MX_TIM1_Init-TIM1-false,5-MX_TIM2_Init-TIM2-false,6-MX_TIM3_Init-TIM3-false,7-MX_TIM4_Init-TIM4-false +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_DMA_Init-DMA-false,3-MX_RTC_Init-RTC-false,4-MX_TIM1_Init-TIM1-false,5-MX_TIM2_Init-TIM2-false,6-MX_TIM4_Init-TIM4-false,7-MX_TIM5_Init-TIM5-false RCC.ADCFreqValue=36000000 RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 @@ -165,43 +198,28 @@ RCC.USBFreq_Value=72000000 RCC.VCOOutput2Freq_Value=8000000 RTC.Format=RTC_FORMAT_BIN RTC.IPParameters=Format -SH.S_TIM1_CH1.0=TIM1_CH1,Output Compare1 CH1 -SH.S_TIM1_CH1.ConfNb=1 -SH.S_TIM1_CH2.0=TIM1_CH2,Output Compare2 CH2 -SH.S_TIM1_CH2.ConfNb=1 -SH.S_TIM1_CH3.0=TIM1_CH3,Output Compare3 CH3 -SH.S_TIM1_CH3.ConfNb=1 SH.S_TIM2_CH1_ETR.0=TIM2_CH1,PWM Generation1 CH1 SH.S_TIM2_CH1_ETR.ConfNb=1 -SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1 -SH.S_TIM3_CH1.ConfNb=1 SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1 SH.S_TIM4_CH1.ConfNb=1 -TIM1.Channel-Output\ Compare2\ CH2=TIM_CHANNEL_2 -TIM1.Channel-Output\ Compare3\ CH3=TIM_CHANNEL_3 -TIM1.IPParameters=TIM_MasterOutputTrigger,TIM_MasterSlaveMode,Channel-Output Compare2 CH2,Channel-Output Compare3 CH3,Prescaler,Period,OCMode_1,Pulse-Output Compare1 CH1,OCMode_2,Pulse-Output Compare2 CH2,OCMode_3,Pulse-Output Compare3 CH3 -TIM1.OCMode_1=TIM_OCMODE_TOGGLE -TIM1.OCMode_2=TIM_OCMODE_TOGGLE -TIM1.OCMode_3=TIM_OCMODE_TOGGLE -TIM1.Period=10000 -TIM1.Prescaler=36 -TIM1.Pulse-Output\ Compare1\ CH1=1000 -TIM1.Pulse-Output\ Compare2\ CH2=2000 -TIM1.Pulse-Output\ Compare3\ CH3=3000 +SH.S_TIM5_CH2.0=TIM5_CH2,PWM Generation2 CH2 +SH.S_TIM5_CH2.ConfNb=1 +TIM1.IPParameters=TIM_MasterOutputTrigger,TIM_MasterSlaveMode,Prescaler,Period +TIM1.Period=5000 +TIM1.Prescaler=72 TIM1.TIM_MasterOutputTrigger=TIM_TRGO_RESET TIM1.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE TIM2.IPParameters=Prescaler,Period,Pulse-PWM Generation1 CH1 TIM2.Period=5000 TIM2.Prescaler=72 TIM2.Pulse-PWM\ Generation1\ CH1=1000 -TIM3.IPParameters=Prescaler,Period,Pulse-PWM Generation1 CH1 -TIM3.Period=5000 -TIM3.Prescaler=72 -TIM3.Pulse-PWM\ Generation1\ CH1=2000 -TIM4.IPParameters=Prescaler,Period,Pulse-PWM Generation1 CH1 +TIM4.IPParameters=Prescaler,Period TIM4.Period=5000 TIM4.Prescaler=72 -TIM4.Pulse-PWM\ Generation1\ CH1=3000 +TIM5.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM5.IPParameters=Channel-PWM Generation2 CH2,Prescaler,Period +TIM5.Period=5000 +TIM5.Prescaler=72 VP_RTC_No_RTC_Output.Mode=RTC_OUT_NO VP_RTC_No_RTC_Output.Signal=RTC_No_RTC_Output VP_SYS_VS_Systick.Mode=SysTick @@ -210,8 +228,8 @@ VP_TIM1_VS_ClockSourceINT.Mode=Internal VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT VP_TIM2_VS_ClockSourceINT.Mode=Internal VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT -VP_TIM3_VS_ClockSourceINT.Mode=Internal -VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT VP_TIM4_VS_ClockSourceINT.Mode=Internal VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT +VP_TIM5_VS_ClockSourceINT.Mode=Internal +VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT board=inverter2 diff --git a/include/mxconstants.h b/include/mxconstants.h index 56c883d..1fdcbe9 100644 --- a/include/mxconstants.h +++ b/include/mxconstants.h @@ -41,18 +41,24 @@ /* Private define ------------------------------------------------------------*/ -#define LED2_PIN_Pin GPIO_PIN_4 -#define LED2_PIN_GPIO_Port GPIOE -#define LED3_PIN_Pin GPIO_PIN_5 -#define LED3_PIN_GPIO_Port GPIOE -#define LED4_PIN_Pin GPIO_PIN_6 -#define LED4_PIN_GPIO_Port GPIOE -#define LED_PIN_Pin GPIO_PIN_13 -#define LED_PIN_GPIO_Port GPIOC -#define BridgePolarity_Pin GPIO_PIN_0 -#define BridgePolarity_GPIO_Port GPIOC +#define LED0_Pin GPIO_PIN_4 +#define LED0_GPIO_Port GPIOE +#define LED1_Pin GPIO_PIN_5 +#define LED1_GPIO_Port GPIOE +#define LED2_Pin GPIO_PIN_6 +#define LED2_GPIO_Port GPIOE +#define LED_Pin GPIO_PIN_13 +#define LED_GPIO_Port GPIOC +#define BridgePolarity0_Pin GPIO_PIN_0 +#define BridgePolarity0_GPIO_Port GPIOC +#define BridgePolarity1_Pin GPIO_PIN_1 +#define BridgePolarity1_GPIO_Port GPIOC +#define BridgePolarity2_Pin GPIO_PIN_2 +#define BridgePolarity2_GPIO_Port GPIOC #define ERROR_PIN_Pin GPIO_PIN_10 #define ERROR_PIN_GPIO_Port GPIOB +#define Sync_Pin GPIO_PIN_3 +#define Sync_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ diff --git a/include/stm32f1xx_it.h b/include/stm32f1xx_it.h index 4fd5431..7bc7632 100644 --- a/include/stm32f1xx_it.h +++ b/include/stm32f1xx_it.h @@ -54,9 +54,13 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void DMA1_Channel1_IRQHandler(void); void DMA1_Channel5_IRQHandler(void); -void TIM1_CC_IRQHandler(void); +void TIM1_UP_IRQHandler(void); void TIM2_IRQHandler(void); +void TIM4_IRQHandler(void); +void TIM5_IRQHandler(void); +void DMA2_Channel4_5_IRQHandler(void); #ifdef __cplusplus } diff --git a/my_src/inverter.c b/my_src/inverter.c index 67e8b45..756c561 100644 --- a/my_src/inverter.c +++ b/my_src/inverter.c @@ -15,28 +15,31 @@ extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim2; -extern TIM_HandleTypeDef htim3; extern TIM_HandleTypeDef htim4; +extern TIM_HandleTypeDef htim5; #define NUM_OF_SINE_SLOT 30 uint16_t freqOut = 100; -const uint32_t FREQ_IN = 72E6; +const uint32_t FREQ_IN = 1E6; const float PI = 3.14159; float slotAngle = 180.0 / NUM_OF_SINE_SLOT; float sineValues[NUM_OF_SINE_SLOT]; uint16_t IV[NUM_OF_SINE_SLOT]; +volatile uint32_t timer1Cnt; typedef struct { uint8_t slotCnt; bool running; GPIO_TypeDef *bridgePolarityPort; uint16_t bridgePolarityPin; + IRQn_Type irqType; TIM_HandleTypeDef *handle; + uint32_t channel; } timerSupport_t; #define NUM_OF_TIMER 3 -timerSupport_t timerSupport[NUM_OF_TIMER]; +volatile timerSupport_t timerSupport[NUM_OF_TIMER]; @@ -46,29 +49,27 @@ void inverterBegin() { sineValues[i] = sinf(angle / 180 * PI); } - // TODO Configure pins for all three bridges timerSupport[0].handle = &htim2; timerSupport[0].running = false; timerSupport[0].slotCnt = 0; - timerSupport[1].handle = &htim3; + timerSupport[0].bridgePolarityPort = BridgePolarity0_GPIO_Port; + timerSupport[0].bridgePolarityPin = BridgePolarity0_Pin; + timerSupport[0].irqType = TIM2_IRQn; + timerSupport[0].channel = TIM_CHANNEL_1; + timerSupport[1].handle = &htim5; timerSupport[1].running = false; timerSupport[1].slotCnt = 0; + timerSupport[1].bridgePolarityPort = BridgePolarity1_GPIO_Port; + timerSupport[1].bridgePolarityPin = BridgePolarity1_Pin; + timerSupport[1].irqType = TIM5_IRQn; + timerSupport[1].channel = TIM_CHANNEL_2; timerSupport[2].handle = &htim4; timerSupport[2].running = false; timerSupport[2].slotCnt = 0; - - __HAL_TIM_ENABLE_IT(&htim2, TIM_IT_UPDATE); - HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(TIM2_IRQn); - __HAL_TIM_ENABLE_IT(&htim3, TIM_IT_UPDATE); - HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(TIM3_IRQn); - __HAL_TIM_ENABLE_IT(&htim4, TIM_IT_UPDATE); - HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(TIM4_IRQn); - - HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); + timerSupport[2].bridgePolarityPort = BridgePolarity2_GPIO_Port; + timerSupport[2].bridgePolarityPin = BridgePolarity2_Pin; + timerSupport[2].irqType = TIM4_IRQn; + timerSupport[2].channel = TIM_CHANNEL_1; } void inverterSetFrequency(uint8_t freqOut) { @@ -77,12 +78,13 @@ void inverterSetFrequency(uint8_t freqOut) { IV[i] = (uint16_t)(sineValues[i] * 0.9 * slotWidth); } - HAL_TIM_OC_Stop_IT(&htim1, TIM_CHANNEL_1); - HAL_TIM_OC_Stop_IT(&htim1, TIM_CHANNEL_2); - HAL_TIM_OC_Stop_IT(&htim1, TIM_CHANNEL_3); + HAL_TIM_Base_Stop(&htim1); + __HAL_TIM_DISABLE_IT(&htim1, TIM_IT_UPDATE); + for (uint8_t i = 0; i < NUM_OF_TIMER; i++){ - HAL_TIM_PWM_Stop_DMA(timerSupport[i].handle, TIM_CHANNEL_1); + HAL_TIM_PWM_Stop_DMA(timerSupport[i].handle, timerSupport[i].channel); + __HAL_TIM_DISABLE_IT(timerSupport[i].handle, TIM_IT_UPDATE); timerSupport[i].slotCnt = 0; timerSupport[i].running = false; @@ -90,10 +92,14 @@ void inverterSetFrequency(uint8_t freqOut) { __HAL_TIM_SET_AUTORELOAD(timerSupport[i].handle, slotWidth); } - // TODO Set the 120° values for the channels - HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_1); - HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_2); - HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_3); + HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); + + timer1Cnt = 0; + __HAL_TIM_SET_AUTORELOAD(&htim1, slotWidth); + HAL_TIM_Base_Start_IT(&htim1); + __HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE); } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { @@ -106,28 +112,32 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { } } } -} - -void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef * htim) { - if (htim->Instance == TIM1) { - if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) { - HAL_GPIO_TogglePin(LED2_PIN_GPIO_Port, LED2_PIN_Pin); + if (htim == &htim1) { + HAL_GPIO_TogglePin(Sync_GPIO_Port, Sync_Pin); + if (timer1Cnt == 0) { if (! timerSupport[0].running) { + HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET); timerSupport[0].running = true; - HAL_TIM_PWM_Start_DMA(timerSupport[0].handle, TIM_CHANNEL_1, (uint32_t*)IV, NUM_OF_SINE_SLOT); + __HAL_TIM_ENABLE_IT(timerSupport[0].handle, TIM_IT_UPDATE); + HAL_TIM_PWM_Start_DMA(timerSupport[0].handle, timerSupport[0].channel, (uint32_t*)IV, NUM_OF_SINE_SLOT); } - } else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) { - HAL_GPIO_TogglePin(LED3_PIN_GPIO_Port, LED3_PIN_Pin); + } else if (timer1Cnt == ((NUM_OF_SINE_SLOT * 2) / 3)) { if (! timerSupport[1].running) { + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); timerSupport[1].running = true; - HAL_TIM_PWM_Start_DMA(timerSupport[1].handle, TIM_CHANNEL_1, (uint32_t*)IV, NUM_OF_SINE_SLOT); + HAL_TIM_PWM_Start_DMA(timerSupport[1].handle, timerSupport[1].channel, (uint32_t*)IV, NUM_OF_SINE_SLOT); + __HAL_TIM_ENABLE_IT(timerSupport[1].handle, TIM_IT_UPDATE); } - } else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3) { - HAL_GPIO_TogglePin(LED4_PIN_GPIO_Port, LED4_PIN_Pin); + } else if (timer1Cnt == ((NUM_OF_SINE_SLOT * 2) * 2 / 3)) { if (! timerSupport[2].running) { + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET); timerSupport[2].running = true; - HAL_TIM_PWM_Start_DMA(timerSupport[2].handle, TIM_CHANNEL_1, (uint32_t*)IV, NUM_OF_SINE_SLOT); + HAL_TIM_PWM_Start_DMA(timerSupport[2].handle, timerSupport[2].channel, (uint32_t*)IV, NUM_OF_SINE_SLOT); + __HAL_TIM_ENABLE_IT(timerSupport[2].handle, TIM_IT_UPDATE); } } + + timer1Cnt++; } } + diff --git a/my_src/inverter.h b/my_src/inverter.h index d456ebf..89bc7e1 100644 --- a/my_src/inverter.h +++ b/my_src/inverter.h @@ -9,7 +9,7 @@ #define INVERTER_H_ -void inverterInit(); +void inverterBegin(); void inverterSetFrequency(uint8_t freqOut); diff --git a/my_src/main2.c b/my_src/main2.c index 9a80c43..675c32c 100644 --- a/my_src/main2.c +++ b/my_src/main2.c @@ -24,7 +24,7 @@ void blink(void *handle) { - HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin); + HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); } void my_setup_1() { @@ -44,8 +44,20 @@ void my_errorHandler() { HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_SET); } +void testSwitchFrequency1(void *handle) { + inverterSetFrequency(100); +} +void testSwitchFrequency2(void *handle) { + inverterSetFrequency(50); +} + void my_setup_2() { inverterBegin(); + + inverterSetFrequency(50); + schAdd(testSwitchFrequency1, NULL, 5000, 0); + schAdd(testSwitchFrequency2, NULL, 10000, 0); + schAdd(testSwitchFrequency1, NULL, 15000, 0); } diff --git a/src/main.c b/src/main.c index 7860a47..ccd2d98 100644 --- a/src/main.c +++ b/src/main.c @@ -43,9 +43,11 @@ RTC_HandleTypeDef hrtc; TIM_HandleTypeDef htim1; TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; TIM_HandleTypeDef htim4; +TIM_HandleTypeDef htim5; DMA_HandleTypeDef hdma_tim2_ch1; +DMA_HandleTypeDef hdma_tim4_ch1; +DMA_HandleTypeDef hdma_tim5_ch2; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ @@ -60,8 +62,8 @@ static void MX_DMA_Init(void); static void MX_RTC_Init(void); static void MX_TIM1_Init(void); static void MX_TIM2_Init(void); -static void MX_TIM3_Init(void); static void MX_TIM4_Init(void); +static void MX_TIM5_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); @@ -97,8 +99,8 @@ int main(void) MX_RTC_Init(); MX_TIM1_Init(); MX_TIM2_Init(); - MX_TIM3_Init(); MX_TIM4_Init(); + MX_TIM5_Init(); /* USER CODE BEGIN 2 */ my_setup_2(); @@ -210,13 +212,11 @@ static void MX_TIM1_Init(void) TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; - TIM_OC_InitTypeDef sConfigOC; htim1.Instance = TIM1; - htim1.Init.Prescaler = 36; + htim1.Init.Prescaler = 72; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - htim1.Init.Period = 10000; + htim1.Init.Period = 5000; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; if (HAL_TIM_Base_Init(&htim1) != HAL_OK) @@ -230,11 +230,6 @@ static void MX_TIM1_Init(void) Error_Handler(); } - if (HAL_TIM_OC_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) @@ -242,44 +237,6 @@ static void MX_TIM1_Init(void) Error_Handler(); } - 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.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.OCMode = TIM_OCMODE_TOGGLE; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.Pulse = 2000; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.Pulse = 3000; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - - HAL_TIM_MspPostInit(&htim1); - } /* TIM2 init function */ @@ -291,7 +248,7 @@ static void MX_TIM2_Init(void) TIM_OC_InitTypeDef sConfigOC; htim2.Instance = TIM2; - htim2.Init.Prescaler = 1; + htim2.Init.Prescaler = 72; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 5000; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; @@ -331,55 +288,6 @@ static void MX_TIM2_Init(void) } -/* TIM3 init function */ -static void MX_TIM3_Init(void) -{ - - TIM_ClockConfigTypeDef sClockSourceConfig; - TIM_MasterConfigTypeDef sMasterConfig; - TIM_OC_InitTypeDef sConfigOC; - - htim3.Instance = TIM3; - htim3.Init.Prescaler = 1; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 5000; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 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 = 2000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - - HAL_TIM_MspPostInit(&htim3); - -} - /* TIM4 init function */ static void MX_TIM4_Init(void) { @@ -417,7 +325,7 @@ static void MX_TIM4_Init(void) } sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 3000; + 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) @@ -429,6 +337,55 @@ static void MX_TIM4_Init(void) } +/* TIM5 init function */ +static void MX_TIM5_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim5.Instance = TIM5; + htim5.Init.Prescaler = 72; + htim5.Init.CounterMode = TIM_COUNTERMODE_UP; + htim5.Init.Period = 5000; + htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + if (HAL_TIM_Base_Init(&htim5) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim5, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_PWM_Init(&htim5) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &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(&htim5, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim5); + +} + /** * Enable DMA controller clock */ @@ -436,11 +393,18 @@ static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); + __HAL_RCC_DMA2_CLK_ENABLE(); /* DMA interrupt init */ + /* DMA1_Channel1_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); /* DMA1_Channel5_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); + /* DMA2_Channel4_5_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA2_Channel4_5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn); } @@ -464,31 +428,31 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, LED0_Pin|LED1_Pin|LED2_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, LED_PIN_Pin|BridgePolarity_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOC, LED_Pin|BridgePolarity0_Pin|BridgePolarity1_Pin|BridgePolarity2_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOB, ERROR_PIN_Pin|Sync_Pin, GPIO_PIN_RESET); - /*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */ - GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin; + /*Configure GPIO pins : LED0_Pin LED1_Pin LED2_Pin */ + GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin|LED2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - /*Configure GPIO pins : LED_PIN_Pin BridgePolarity_Pin */ - GPIO_InitStruct.Pin = LED_PIN_Pin|BridgePolarity_Pin; + /*Configure GPIO pins : LED_Pin BridgePolarity0_Pin BridgePolarity1_Pin BridgePolarity2_Pin */ + GPIO_InitStruct.Pin = LED_Pin|BridgePolarity0_Pin|BridgePolarity1_Pin|BridgePolarity2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pin : ERROR_PIN_Pin */ - GPIO_InitStruct.Pin = ERROR_PIN_Pin; + /*Configure GPIO pins : ERROR_PIN_Pin Sync_Pin */ + GPIO_InitStruct.Pin = ERROR_PIN_Pin|Sync_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(ERROR_PIN_GPIO_Port, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } diff --git a/src/main.c-bak b/src/main.c-bak index d4b2000..bb9f381 100644 --- a/src/main.c-bak +++ b/src/main.c-bak @@ -42,9 +42,11 @@ RTC_HandleTypeDef hrtc; TIM_HandleTypeDef htim1; TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; TIM_HandleTypeDef htim4; +TIM_HandleTypeDef htim5; DMA_HandleTypeDef hdma_tim2_ch1; +DMA_HandleTypeDef hdma_tim4_ch1; +DMA_HandleTypeDef hdma_tim5_ch2; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ @@ -59,8 +61,8 @@ static void MX_DMA_Init(void); static void MX_RTC_Init(void); static void MX_TIM1_Init(void); static void MX_TIM2_Init(void); -static void MX_TIM3_Init(void); static void MX_TIM4_Init(void); +static void MX_TIM5_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); @@ -95,8 +97,8 @@ int main(void) MX_RTC_Init(); MX_TIM1_Init(); MX_TIM2_Init(); - MX_TIM3_Init(); MX_TIM4_Init(); + MX_TIM5_Init(); /* USER CODE BEGIN 2 */ @@ -206,13 +208,11 @@ static void MX_TIM1_Init(void) TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; - TIM_OC_InitTypeDef sConfigOC; htim1.Instance = TIM1; - htim1.Init.Prescaler = 36; + htim1.Init.Prescaler = 72; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - htim1.Init.Period = 10000; + htim1.Init.Period = 5000; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; if (HAL_TIM_Base_Init(&htim1) != HAL_OK) @@ -226,11 +226,6 @@ static void MX_TIM1_Init(void) Error_Handler(); } - if (HAL_TIM_OC_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) @@ -238,44 +233,6 @@ static void MX_TIM1_Init(void) Error_Handler(); } - 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.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.OCMode = TIM_OCMODE_TOGGLE; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.Pulse = 2000; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - - sConfigOC.Pulse = 3000; - if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - - HAL_TIM_MspPostInit(&htim1); - } /* TIM2 init function */ @@ -327,55 +284,6 @@ static void MX_TIM2_Init(void) } -/* TIM3 init function */ -static void MX_TIM3_Init(void) -{ - - TIM_ClockConfigTypeDef sClockSourceConfig; - TIM_MasterConfigTypeDef sMasterConfig; - TIM_OC_InitTypeDef sConfigOC; - - htim3.Instance = TIM3; - htim3.Init.Prescaler = 72; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 5000; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 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 = 2000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - - HAL_TIM_MspPostInit(&htim3); - -} - /* TIM4 init function */ static void MX_TIM4_Init(void) { @@ -413,7 +321,7 @@ static void MX_TIM4_Init(void) } sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 3000; + 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) @@ -425,6 +333,55 @@ static void MX_TIM4_Init(void) } +/* TIM5 init function */ +static void MX_TIM5_Init(void) +{ + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim5.Instance = TIM5; + htim5.Init.Prescaler = 72; + htim5.Init.CounterMode = TIM_COUNTERMODE_UP; + htim5.Init.Period = 5000; + htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + if (HAL_TIM_Base_Init(&htim5) != HAL_OK) + { + Error_Handler(); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim5, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + + if (HAL_TIM_PWM_Init(&htim5) != HAL_OK) + { + Error_Handler(); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &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(&htim5, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + + HAL_TIM_MspPostInit(&htim5); + +} + /** * Enable DMA controller clock */ @@ -432,11 +389,18 @@ static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); + __HAL_RCC_DMA2_CLK_ENABLE(); /* DMA interrupt init */ + /* DMA1_Channel1_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); /* DMA1_Channel5_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); + /* DMA2_Channel4_5_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA2_Channel4_5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn); } @@ -460,31 +424,31 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, LED0_Pin|LED1_Pin|LED2_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, LED_PIN_Pin|BridgePolarity_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOC, LED_Pin|BridgePolarity0_Pin|BridgePolarity1_Pin|BridgePolarity2_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOB, ERROR_PIN_Pin|Sync_Pin, GPIO_PIN_RESET); - /*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */ - GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin; + /*Configure GPIO pins : LED0_Pin LED1_Pin LED2_Pin */ + GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin|LED2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - /*Configure GPIO pins : LED_PIN_Pin BridgePolarity_Pin */ - GPIO_InitStruct.Pin = LED_PIN_Pin|BridgePolarity_Pin; + /*Configure GPIO pins : LED_Pin BridgePolarity0_Pin BridgePolarity1_Pin BridgePolarity2_Pin */ + GPIO_InitStruct.Pin = LED_Pin|BridgePolarity0_Pin|BridgePolarity1_Pin|BridgePolarity2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pin : ERROR_PIN_Pin */ - GPIO_InitStruct.Pin = ERROR_PIN_Pin; + /*Configure GPIO pins : ERROR_PIN_Pin Sync_Pin */ + GPIO_InitStruct.Pin = ERROR_PIN_Pin|Sync_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(ERROR_PIN_GPIO_Port, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } diff --git a/src/stm32f1xx_hal_msp.c b/src/stm32f1xx_hal_msp.c index 375a46e..276f213 100644 --- a/src/stm32f1xx_hal_msp.c +++ b/src/stm32f1xx_hal_msp.c @@ -36,6 +36,10 @@ extern DMA_HandleTypeDef hdma_tim2_ch1; +extern DMA_HandleTypeDef hdma_tim4_ch1; + +extern DMA_HandleTypeDef hdma_tim5_ch2; + extern void Error_Handler(void); /* USER CODE BEGIN 0 */ @@ -127,8 +131,8 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* Peripheral clock enable */ __HAL_RCC_TIM1_CLK_ENABLE(); /* Peripheral interrupt init */ - HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); + HAL_NVIC_SetPriority(TIM1_UP_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_UP_IRQn); /* USER CODE BEGIN TIM1_MspInit 1 */ /* USER CODE END TIM1_MspInit 1 */ @@ -165,17 +169,6 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM2_MspInit 1 */ } - else if(htim_base->Instance==TIM3) - { - /* USER CODE BEGIN TIM3_MspInit 0 */ - - /* USER CODE END TIM3_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_TIM3_CLK_ENABLE(); - /* USER CODE BEGIN TIM3_MspInit 1 */ - - /* USER CODE END TIM3_MspInit 1 */ - } else if(htim_base->Instance==TIM4) { /* USER CODE BEGIN TIM4_MspInit 0 */ @@ -183,10 +176,63 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM4_CLK_ENABLE(); + + /* Peripheral DMA init*/ + + hdma_tim4_ch1.Instance = DMA1_Channel1; + hdma_tim4_ch1.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_tim4_ch1.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_tim4_ch1.Init.MemInc = DMA_MINC_ENABLE; + hdma_tim4_ch1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; + hdma_tim4_ch1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + hdma_tim4_ch1.Init.Mode = DMA_CIRCULAR; + hdma_tim4_ch1.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_tim4_ch1) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_CC1],hdma_tim4_ch1); + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM4_IRQn); /* USER CODE BEGIN TIM4_MspInit 1 */ /* USER CODE END TIM4_MspInit 1 */ } + else if(htim_base->Instance==TIM5) + { + /* USER CODE BEGIN TIM5_MspInit 0 */ + + /* USER CODE END TIM5_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM5_CLK_ENABLE(); + + /* Peripheral DMA init*/ + + hdma_tim5_ch2.Instance = DMA2_Channel4; + hdma_tim5_ch2.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_tim5_ch2.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_tim5_ch2.Init.MemInc = DMA_MINC_ENABLE; + hdma_tim5_ch2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; + hdma_tim5_ch2.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + hdma_tim5_ch2.Init.Mode = DMA_CIRCULAR; + hdma_tim5_ch2.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_tim5_ch2) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_CC2],hdma_tim5_ch2); + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(TIM5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM5_IRQn); + /* USER CODE BEGIN TIM5_MspInit 1 */ + + /* USER CODE END TIM5_MspInit 1 */ + } } @@ -194,33 +240,11 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) { GPIO_InitTypeDef GPIO_InitStruct; - if(htim->Instance==TIM1) - { - /* USER CODE BEGIN TIM1_MspPostInit 0 */ - - /* USER CODE END TIM1_MspPostInit 0 */ - /**TIM1 GPIO Configuration - PE9 ------> TIM1_CH1 - PE11 ------> TIM1_CH2 - PE13 ------> TIM1_CH3 - */ - GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - - __HAL_AFIO_REMAP_TIM1_ENABLE(); - - /* USER CODE BEGIN TIM1_MspPostInit 1 */ - - /* USER CODE END TIM1_MspPostInit 1 */ - } - else if(htim->Instance==TIM2) + if(htim->Instance==TIM2) { /* USER CODE BEGIN TIM2_MspPostInit 0 */ /* USER CODE END TIM2_MspPostInit 0 */ - /**TIM2 GPIO Configuration PA0-WKUP ------> TIM2_CH1 */ @@ -233,24 +257,6 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) /* USER CODE END TIM2_MspPostInit 1 */ } - else if(htim->Instance==TIM3) - { - /* USER CODE BEGIN TIM3_MspPostInit 0 */ - - /* USER CODE END TIM3_MspPostInit 0 */ - - /**TIM3 GPIO Configuration - PA6 ------> TIM3_CH1 - */ - GPIO_InitStruct.Pin = GPIO_PIN_6; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USER CODE BEGIN TIM3_MspPostInit 1 */ - - /* USER CODE END TIM3_MspPostInit 1 */ - } else if(htim->Instance==TIM4) { /* USER CODE BEGIN TIM4_MspPostInit 0 */ @@ -271,6 +277,24 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) /* USER CODE END TIM4_MspPostInit 1 */ } + else if(htim->Instance==TIM5) + { + /* USER CODE BEGIN TIM5_MspPostInit 0 */ + + /* USER CODE END TIM5_MspPostInit 0 */ + + /**TIM5 GPIO Configuration + PA1 ------> TIM5_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM5_MspPostInit 1 */ + + /* USER CODE END TIM5_MspPostInit 1 */ + } } @@ -286,7 +310,7 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) __HAL_RCC_TIM1_CLK_DISABLE(); /* Peripheral interrupt DeInit*/ - HAL_NVIC_DisableIRQ(TIM1_CC_IRQn); + HAL_NVIC_DisableIRQ(TIM1_UP_IRQn); /* USER CODE BEGIN TIM1_MspDeInit 1 */ @@ -310,17 +334,6 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM2_MspDeInit 1 */ } - else if(htim_base->Instance==TIM3) - { - /* USER CODE BEGIN TIM3_MspDeInit 0 */ - - /* USER CODE END TIM3_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_TIM3_CLK_DISABLE(); - /* USER CODE BEGIN TIM3_MspDeInit 1 */ - - /* USER CODE END TIM3_MspDeInit 1 */ - } else if(htim_base->Instance==TIM4) { /* USER CODE BEGIN TIM4_MspDeInit 0 */ @@ -328,10 +341,35 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_TIM4_CLK_DISABLE(); + + /* Peripheral DMA DeInit*/ + HAL_DMA_DeInit(htim_base->hdma[TIM_DMA_ID_CC1]); + + /* Peripheral interrupt DeInit*/ + HAL_NVIC_DisableIRQ(TIM4_IRQn); + /* USER CODE BEGIN TIM4_MspDeInit 1 */ /* USER CODE END TIM4_MspDeInit 1 */ } + else if(htim_base->Instance==TIM5) + { + /* USER CODE BEGIN TIM5_MspDeInit 0 */ + + /* USER CODE END TIM5_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM5_CLK_DISABLE(); + + /* Peripheral DMA DeInit*/ + HAL_DMA_DeInit(htim_base->hdma[TIM_DMA_ID_CC2]); + + /* Peripheral interrupt DeInit*/ + HAL_NVIC_DisableIRQ(TIM5_IRQn); + + /* USER CODE BEGIN TIM5_MspDeInit 1 */ + + /* USER CODE END TIM5_MspDeInit 1 */ + } } diff --git a/src/stm32f1xx_it.c b/src/stm32f1xx_it.c index 97c547f..120b2da 100644 --- a/src/stm32f1xx_it.c +++ b/src/stm32f1xx_it.c @@ -41,8 +41,12 @@ /* External variables --------------------------------------------------------*/ extern DMA_HandleTypeDef hdma_tim2_ch1; +extern DMA_HandleTypeDef hdma_tim4_ch1; +extern DMA_HandleTypeDef hdma_tim5_ch2; extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim2; +extern TIM_HandleTypeDef htim4; +extern TIM_HandleTypeDef htim5; /******************************************************************************/ /* Cortex-M3 Processor Interruption and Exception Handlers */ @@ -186,6 +190,20 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ +/** +* @brief This function handles DMA1 channel1 global interrupt. +*/ +void DMA1_Channel1_IRQHandler(void) +{ + /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */ + + /* USER CODE END DMA1_Channel1_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_tim4_ch1); + /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */ + + /* USER CODE END DMA1_Channel1_IRQn 1 */ +} + /** * @brief This function handles DMA1 channel5 global interrupt. */ @@ -201,17 +219,17 @@ void DMA1_Channel5_IRQHandler(void) } /** -* @brief This function handles TIM1 capture compare interrupt. +* @brief This function handles TIM1 update interrupt. */ -void TIM1_CC_IRQHandler(void) +void TIM1_UP_IRQHandler(void) { - /* USER CODE BEGIN TIM1_CC_IRQn 0 */ + /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - /* USER CODE END TIM1_CC_IRQn 0 */ + /* USER CODE END TIM1_UP_IRQn 0 */ HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_CC_IRQn 1 */ + /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - /* USER CODE END TIM1_CC_IRQn 1 */ + /* USER CODE END TIM1_UP_IRQn 1 */ } /** @@ -228,6 +246,48 @@ void TIM2_IRQHandler(void) /* USER CODE END TIM2_IRQn 1 */ } +/** +* @brief This function handles TIM4 global interrupt. +*/ +void TIM4_IRQHandler(void) +{ + /* USER CODE BEGIN TIM4_IRQn 0 */ + + /* USER CODE END TIM4_IRQn 0 */ + HAL_TIM_IRQHandler(&htim4); + /* USER CODE BEGIN TIM4_IRQn 1 */ + + /* USER CODE END TIM4_IRQn 1 */ +} + +/** +* @brief This function handles TIM5 global interrupt. +*/ +void TIM5_IRQHandler(void) +{ + /* USER CODE BEGIN TIM5_IRQn 0 */ + + /* USER CODE END TIM5_IRQn 0 */ + HAL_TIM_IRQHandler(&htim5); + /* USER CODE BEGIN TIM5_IRQn 1 */ + + /* USER CODE END TIM5_IRQn 1 */ +} + +/** +* @brief This function handles DMA2 channel4 and channel5 global interrupts. +*/ +void DMA2_Channel4_5_IRQHandler(void) +{ + /* USER CODE BEGIN DMA2_Channel4_5_IRQn 0 */ + + /* USER CODE END DMA2_Channel4_5_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_tim5_ch2); + /* USER CODE BEGIN DMA2_Channel4_5_IRQn 1 */ + + /* USER CODE END DMA2_Channel4_5_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */