⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itc.c

📁 ST7LITE39 IIC功能应用实例,是一个完整的源程序
💻 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 + -