#include "M451Series.h" #include "global.h" /** * @brief PWM0 IRQ Handler * * @param None * * @return None * * @details ISR to handle PWM0 interrupt event */ uint32_t cnt = 0; uint32_t out = 0; uint32_t X_AxisStep = 0; void PWM0P0_IRQHandler(void) { static uint32_t lastStep = 0; if (X_AxisStep > 0){ X_AxisStep--; } if((X_AxisStep > 0) && (lastStep <= 0)){ PWM_EnableOutput(PWM0, PWM_CH_0_MASK | PWM_CH_1_MASK | PWM_CH_2_MASK | PWM_CH_3_MASK); }else if((X_AxisStep <= 0) && (lastStep > 0)){ PWM_DisableOutput(PWM0, PWM_CH_0_MASK | PWM_CH_1_MASK | PWM_CH_2_MASK | PWM_CH_3_MASK); } lastStep = X_AxisStep; // Clear channel 0 period interrupt flag PWM_ClearPeriodIntFlag(PWM0, 0); } /** * @brief GPIO PB IRQ * * @param None * * @return None * * @details The PB default IRQ, declared in startup_M451Series.s. */ void GPB_IRQHandler(void) { /* To check if PB.2 interrupt occurred */ if(GPIO_GET_INT_FLAG(PB, BIT2)) { X_AxisStep = 200; GPIO_CLR_INT_FLAG(PB, BIT2); printf("PB.2 INT occurred.\n"); } else { /* Un-expected interrupt. Just clear all PB interrupts */ PB->INTSRC = PB->INTSRC; printf("Un-expected interrupts.\n"); } } /** * @brief GPIO PC IRQ * * @param None * * @return None * * @details The PC default IRQ, declared in startup_M451Series.s. */ void GPC_IRQHandler(void) { /* To check if PC.5 interrupt occurred */ if(GPIO_GET_INT_FLAG(PC, BIT5)) { X_AxisStep = 200; GPIO_CLR_INT_FLAG(PC, BIT5); printf("PC.5 INT occurred.\n"); } else { /* Un-expected interrupt. Just clear all PC interrupts */ PC->INTSRC = PC->INTSRC; printf("Un-expected interrupts.\n"); } }