//************************************************************ // Copyright (c) 深圳市赛元微电子有限公司 // 文件名称 : sc92f8003_exti.c // 作者 : // 模块功能 : EXTI固件库函数C文件 // 局部函数列表: // 最后更正日期: 2018/9/4 // 版本 : V1.0 // 说明 : //************************************************************* #include "sc92f8003_exti.h" /************************************************** *函数名称:void EXTI_DeInit(EXTIx_Typedef INTx) *函数功能:INTx相关寄存器复位至缺省值 *入口参数:INTx INTx选择 *出口参数:void **************************************************/ void EXTI_DeInit(EXTIx_Typedef INTx) { switch(INTx) { case INT0: INT0R = 0x00; INT0F = 0x00; IE &= (~0X01); IP &= ~0X01; TCON &= (~0X02); break; case INT1: INT1R = 0x00; INT1F = 0x00; IE &= (~0X04); IP &= ~0X04; TCON &= (~0X08); break; case INT2: INT2R = 0x00; INT2F = 0x00; IE1 &= (~0X08); IP1 &= ~0X08; break; default: break; } } /************************************************** *函数名称:void EXTI_SetExtInt0xTriggerMode(uint8_t INT0x, EXTI_TriggerMode_Typedef TriggerMode) *函数功能:INT0x中断触发方式配置函数 *入口参数:INT0x INT0x选择 TriggerMode 中断触发方式选择 *出口参数:void **************************************************/ void EXTI_SetExtInt0xTriggerMode(uint8_t INT0x, EXTI_TriggerMode_Typedef TriggerMode) { switch(TriggerMode) { case EXTI_TRIGGER_RISE_ONLY: INT0R |= INT0x; INT0F &= (~INT0x); break; case EXTI_TRIGGER_FALL_ONLY: INT0R &= (~INT0x); INT0F |= INT0x; break; case EXTI_TRIGGER_RISE_FALL: INT0R |= INT0x; INT0F |= INT0x; break; case EXTI_TRIGGER_DISABLE: INT0R &= (~INT0x); INT0F &= (~INT0x); default: break; } } /************************************************** *函数名称:void EXTI_SetExtInt1xTriggerMode(uint8_t INT1x, EXTI_TriggerMode_Typedef TriggerMode) *函数功能:INT1x中断触发方式配置函数 *入口参数:INT1x INT1x选择 TriggerMode 中断触发方式选择 *出口参数:void **************************************************/ void EXTI_SetExtInt1xTriggerMode(uint8_t INT1x, EXTI_TriggerMode_Typedef TriggerMode) { switch(TriggerMode) { case EXTI_TRIGGER_RISE_ONLY: INT1R |= INT1x; INT1F &= (~INT1x); break; case EXTI_TRIGGER_FALL_ONLY: INT1R &= (~INT1x); INT1F |= INT1x; break; case EXTI_TRIGGER_RISE_FALL: INT1R |= INT1x; INT1F |= INT1x; break; case EXTI_TRIGGER_DISABLE: INT1R &= (~INT1x); INT1F &= (~INT1x); default: break; } } /************************************************** *函数名称:void EXTI_SetExtInt2xTriggerMode(uint8_t INT2x, EXTI_TriggerMode_Typedef TriggerMode) *函数功能:INT2x中断触发方式配置函数 *入口参数:INT2x INT2x选择 TriggerMode 中断触发方式选择 *出口参数:void **************************************************/ void EXTI_SetExtInt2xTriggerMode(uint8_t INT2x, EXTI_TriggerMode_Typedef TriggerMode) { switch(TriggerMode) { case EXTI_TRIGGER_RISE_ONLY: INT2R |= INT2x; INT2F &= (~INT2x); break; case EXTI_TRIGGER_FALL_ONLY: INT2R &= (~INT2x); INT2F |= INT2x; break; case EXTI_TRIGGER_RISE_FALL: INT2R |= INT2x; INT2F |= INT2x; break; case EXTI_TRIGGER_DISABLE: INT2R &= (~INT2x); INT2F &= (~INT2x); default: break; } } /***************************************************** *函数名称:void EXTI_ITConfig(EXTIx_Typedef INTx, FunctionalState NewState, PriorityStatus Priority) *函数功能:INTx中断初始化 *入口参数:INTx INTx选择 FunctionalState NewState 中断使能/关闭选择 PriorityStatus Priority 中断优先级选择 *出口参数:void *****************************************************/ void EXTI_ITConfig(EXTIx_Typedef INTx, FunctionalState NewState, PriorityStatus Priority) { switch(INTx) { case INT0: if(NewState != DISABLE) { IE |= 0X01; } else { IE &= (~0X01); } if(Priority == LOW) { IP &= ~0X01; } else { IP |= 0X01; } break; case INT1: if(NewState != DISABLE) { IE |= 0X04; } else { IE &= (~0X04); } if(Priority == LOW) { IP &= ~0X04; } else { IP |= 0X04; } break; case INT2: if(NewState != DISABLE) { IE1 |= 0X08; } else { IE1 &= (~0X08); } if(Priority == LOW) { IP1 &= ~0X08; } else { IP1 |= 0X08; } break; default: break; } } /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/