//
// Interrupts: handlers for any needed global interrupts
//
#include "stm32f3xx_hal.h"
#include "stm32f3xx.h"
#include "interrupts.h"
#include "gpio.h"
#include "pwmout.h"
// Systick interrupt
void SysTick_Handler(void)
{
HAL_IncTick();
HAL_SYSTICK_IRQHandler();
}
void EXTI9_5_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(SW_B_Pin);
HAL_GPIO_EXTI_IRQHandler(SW_A_Pin);
HAL_GPIO_EXTI_IRQHandler(SW_C_Pin);
}
void EXTI15_10_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(SW_BTN_Pin);
}
uint32_t last_button_press = 0;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
switch(GPIO_Pin)
{
case SW_BTN_Pin:
{
// if(HAL_GetTick() > last_button_press + 100)
// {
// HAL_GPIO_TogglePin(LED_RED);
// HAL_GPIO_TogglePin(GATE_DRIVE);
// last_button_press = HAL_GetTick();
// }
} break;
}
}
void TIM1_TRG_COM_TIM17_IRQHandler(void)
{
/* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 0 */
/* USER CODE END TIM1_TRG_COM_TIM17_IRQn 0 */
HAL_TIM_IRQHandler(pwmout_get_tim());
/* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 1 */
/* USER CODE END TIM1_TRG_COM_TIM17_IRQn 1 */
}
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
if(htim == pwmout_get_tim())
{
HAL_GPIO_WritePin(SSR, 0);
HAL_GPIO_WritePin(LED, 0);
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == pwmout_get_tim())
{
if(htim->Instance->CCR1 == 0)
{
HAL_GPIO_WritePin(LED, 0);
HAL_GPIO_WritePin(SSR, 0);
}
else
{
HAL_GPIO_WritePin(LED, 1);
HAL_GPIO_WritePin(SSR, 1);
}
}
}