89 lines
1.8 KiB
C
89 lines
1.8 KiB
C
|
#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");
|
||
|
}
|
||
|
}
|
||
|
|