void STEP_X_Loc_Gpio(void) //X轴电机定位设置为gpio
{
*pPORTG_MUX |=1<<9;
*pPORTG_MUX |=1<<8;
*pPORTG_FER &=~step_x_loc;
*pPORTGIO_DIR &=~step_x_loc; //设置为输入
*pPORTGIO_INEN |=step_x_loc; //打开外部中断
}
void STEP_X_Loc_Eint(void) //设置为外部中断
{
STEP_X_Loc_Gpio();
*pPORTGIO_EDGE |=step_x_loc ; //设置双边沿出发中断
*pPORTGIO_BOTH |=step_x_loc ; //双边触发中断
*pPORTGIO_MASKB |=step_x_loc ;
*pSIC_IAR5 = ((*pSIC_IAR5) & 0XFFFFFF0F) | (((uint32)2)<<4); //中断等级为9
register_handler(ik_ivg9, step_x_loc_isr);
*pSIC_IMASK1 |= (1<<9); //使能中断
}
void STEP_Y_Loc_Gpio(void) //Y轴电机定位,设置为gpio
{
*pPORTG_MUX |=1<<9; //Y轴电机,定位
*pPORTG_MUX |=1<<8;
*pPORTG_FER &=~step_y_loc;
*pPORTGIO_DIR &=~step_y_loc; //设置为输入
*pPORTGIO_INEN |=step_y_loc; //打开外部中断
}
void STEP_Y_Loc_Eint(void) //设置为外部中断
{
STEP_Y_Loc_Gpio();
*pPORTGIO_EDGE |=step_y_loc ; //设置双边沿出发中断
*pPORTGIO_BOTH |=step_y_loc ; //双边触发中断
*pPORTGIO_MASKB |=step_y_loc;
*pSIC_IAR5 = ((*pSIC_IAR5) & 0XFFFFFF0F) | (((uint32)2)<<4); //中断等级为9
register_handler(ik_ivg9, step_x_loc_isr);
*pSIC_IMASK1 |= (1<<9); //使能中断
}
void STEP_Z_Loc_Gpio(void) //将Z轴定位设置为GPIO
{
*pPORTG_MUX |=1<<11; //Z轴电机,定位
*pPORTG_MUX |=1<<10;
*pPORTG_FER &=~step_z_loc;
*pPORTGIO_DIR &=~step_z_loc; //设置为输入
*pPORTGIO_INEN |=step_z_loc; //打开外部中断
}
void STEP_Z_Loc_Eint(void) //设置为外部中断
{
STEP_Z_Loc_Gpio();
*pPORTGIO_EDGE |=step_z_loc ; //设置双边沿出发中断
*pPORTGIO_BOTH |=step_z_loc ; //双边触发中断
*pPORTGIO_MASKB |=step_z_loc;
*pSIC_IAR5 = ((*pSIC_IAR5) & 0XFFFFFF0F) | (((uint32)2)<<4); //中断等级为9
register_handler(ik_ivg9, step_x_loc_isr);
*pSIC_IMASK1 |= (1<<9); //使能中断
}
这三个是初始化函数,分别将PG6,8,10初始化为双边沿中断