BLTouchTest/App/Exti.c
2023-05-19 15:50:27 +08:00

98 lines
2.9 KiB
C

/************* 功能说明 **************
本文件为STC15xxx系列的外中断初始化和中断程序,用户可以在这个文件中修改自己需要的中断程序.
******************************************/
#include "Exti.h"
#include "EndStop.h"
/********************* INT0中断函数 *************************/
void Ext_INT0(void) interrupt INT0_VECTOR // 进中断时已经清除标志
{
BLTouch_ISR();
}
/********************* INT1中断函数 *************************/
void Ext_INT1(void) interrupt INT1_VECTOR // 进中断时已经清除标志
{
EndStop_ISR();
}
/********************* INT2中断函数 *************************/
void Ext_INT2(void) interrupt INT2_VECTOR //
{
}
/********************* INT3中断函数 *************************/
void Ext_INT3(void) interrupt INT3_VECTOR
{
}
/********************* INT4中断函数 *************************/
void Ext_INT4(void) interrupt INT4_VECTOR
{
}
//========================================================================
// 函数: u8 Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
// 描述: 外部中断初始化程序.
// 参数: INTx: 结构参数,请参考Exti.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
{
if(EXT > EXT_INT4) return 1; //空操作
if(EXT == EXT_INT0) //外中断0
{
if(INTx->EXTI_Interrupt == ENABLE) EX0 = 1; //允许中断
else EX0 = 0; //禁止中断
if(INTx->EXTI_Polity == PolityHigh) PX0 = 1; //高优先级中断
else PX0 = 0; //低优先级中断
if(INTx->EXTI_Mode == EXT_MODE_Fall) IT0 = 1; //下降沿中断
else IT0 = 0; //上升,下降沿中断
return 0; //成功
}
if(EXT == EXT_INT1) //外中断1
{
if(INTx->EXTI_Interrupt == ENABLE) EX1 = 1; //允许中断
else EX1 = 0; //禁止中断
if(INTx->EXTI_Polity == PolityHigh) PX1 = 1; //高优先级中断
else PX1 = 0; //低优先级中断
if(INTx->EXTI_Mode == EXT_MODE_Fall) IT1 = 1; //下降沿中断
else IT1 = 0; //上升,下降沿中断
return 0; //成功
}
if(EXT == EXT_INT2) //外中断2, 固定为下降沿低优先级中断
{
if(INTx->EXTI_Interrupt == ENABLE) INT_CLKO |= (1 << 4); //允许中断
else INT_CLKO &= ~(1 << 4); //禁止中断
return 0; //成功
}
if(EXT == EXT_INT3) //外中断3, 固定为下降沿低优先级中断
{
if(INTx->EXTI_Interrupt == ENABLE) INT_CLKO |= (1 << 5); //允许中断
else INT_CLKO &= ~(1 << 5); //禁止中断
return 0; //成功
}
if(EXT == EXT_INT4) //外中断4, 固定为下降沿低优先级中断
{
if(INTx->EXTI_Interrupt == ENABLE) INT_CLKO |= (1 << 6); //允许中断
else INT_CLKO &= ~(1 << 6); //禁止中断
return 0; //成功
}
return 2; //失败
}