📄 itc.c
字号:
/********************************************************************************
ITC应用子程序(以下子程序参考或采用ST公司MCD Application Team提供的相关子程序) *********************************************************************************/
#include "ST7lib_Config.h" /*配置文件*/
#include "itc_hr.h" /* ITC 硬件寄存器位定义*/
#include "itc.h" /*ITC函数声明*/
unsigned char temp; /* 用于存贮来自acc的值 */
ITC_LEVEL switch_return;
/*-----------------------------------------------------------------------------
子程序名称 : ITC_Init
输入 : 无
输出 : 无
描述 : 初始化中断寄存器
注释 : 无
-----------------------------------------------------------------------------*/
void ITC_Init(void)
{
STORE_CONTENTS()
DisableInterrupts
EISR = REG_DEFAULT;
EICR = REG_DEFAULT;
RESTORE_CONTENTS()
}
/*-----------------------------------------------------------------------------
子程序名称 : ITC_TRAP
输入 : 无
输出 : 无
描述 : 产生陷阱中断
注释 : 无
-----------------------------------------------------------------------------*/
void ITC_TRAP (void)
{
// COSMIC Compiler
{ _asm ("TRAP");}
}
/*-----------------------------------------------------------------------------
子程序名称 : ITC_ConfigureInterrupt
输入 : 1.端口 2. 引脚 3. 信号触发类型
输出 : 无
描述 : 使能中断并在所选的引脚上设定中断的类型
注释 : 无
-----------------------------------------------------------------------------*/
void ITC_ConfigureInterrupt (ITC_Port Portx,unsigned char Pin,
ITC_Sensitivity Sensitivity)
{
STORE_CONTENTS()
DisableInterrupts
if (Sensitivity == IT_EDGE_R_1)
{
Nop /*选择错误的触发*/
}
else
{
if ((unsigned char)Portx & IT_PortA)
{
if ((Pin < 7) && (Pin != 0))
{
if (Sensitivity == IT_EDGE_R_1)
{
Nop /*选择错误的触发*/
}
else
{
if (Pin >= 3)
{
EICR &= EIREG_MASKEI1;
EICR |= (unsigned char)EICR_SET((unsigned char)Sensitivity,2);
EISR &= EIREG_MASKEI1;
EISR |= (unsigned char)EISR_SET((unsigned char)(Pin-3),2);
}
else
{
EICR &= EIREG_MASKEI0;
EICR |= (unsigned char)EICR_SET((unsigned char)Sensitivity,0);
EISR &= EIREG_MASKEI0;
EISR |= (unsigned char)EISR_SET(Pin,0);
}
}
}
}
else if ((unsigned char)Portx & IT_PortB)
{
if ((Pin <= 6) && (Pin != 4))
{
if (Sensitivity == IT_EDGE_R_1)
{
Nop /* 选择错误的触发 */
}
else
{
if (Pin >=3)
{
EICR &= EIREG_MASKEI2;
EICR |= (unsigned char)EICR_SET((unsigned char)Sensitivity,4);
EISR &= EIREG_MASKEI2;
if(Pin==3)
{
EISR |= (unsigned char)EISR_SET(1,4);
}
else
{
EISR |=(unsigned char) EISR_SET((unsigned char)(Pin-3),4);
}
}
else
{
EICR &= EIREG_MASKEI3;
EICR |= (unsigned char)EICR_SET((unsigned char)Sensitivity,6);
EISR &= EIREG_MASKEI3;
EISR |= (unsigned char)EISR_SET(Pin+1,6);
}
}
}
}
}
RESTORE_CONTENTS()
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -