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

📄 int.c

📁 UART ADI example 简单的例子 练练手
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:               int.c
** Latest modified Date:    2008-8-20
** Latest Version:          1.0
** Descriptions:            中断设置与管理
**
**--------------------------------------------------------------------------------------------------------
** Created by:              CaiWenqi
** Created date:            2008-8-20
** Version:                 1.0
** Descriptions:            The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
** Version:                 
** Descriptions:            
**
*********************************************************************************************************/

#include "config.h"

/*********************************************************************************************************
** Function name:       siciwrSetup
** Descriptions:        设置系统中断唤醒使能寄存器
** Input parameters:    uiPara: 见头文件,多个设置使用或操作然后传入此参数
**                      usEnable:   ENABLE  -- 使能
**                                  DISABLE -- 禁能
** Output parameters:   NONE
** Returned value:      NONE
*********************************************************************************************************/
void siciwrSetup (uint32 uiPara, uint16 usEnable)
{
	if (usEnable == ENABLE) {
        *pSIC_IWR |= uiPara;
	} else {
	    *pSIC_IWR &= ~uiPara;
	}
}

/*********************************************************************************************************
** Function name:       sicisrGet
** Descriptions:        获取SIC阶段的中断状态ISR
** Input parameters:    NONE
** Output parameters:   NONE
** Returned value:      返回的ISR,已对无效部分进行了清零
*********************************************************************************************************/
uint32 sicisrGet (void)
{
	return ((*pSIC_ISR) & 0x00ffffff);
}

/*********************************************************************************************************
** Function name:       sicimaskSetup
** Descriptions:        设置系统中断屏蔽寄存器
** Input parameters:    uiPara: 见头文件,多个设置使用或操作然后传入此参数
**                      uiEnable:   ENABLE  -- 使能
**                                  DISABLE -- 禁能
** Output parameters:   NONE
** Returned value:      NONE
*********************************************************************************************************/
void sicimaskSetup (uint32 uiPara, uint16 usEnable)
{
	if (usEnable == ENABLE) {
        *pSIC_IMASK |= uiPara;
	} else {
	    *pSIC_IMASK &= ~uiPara;
	}
}

/*********************************************************************************************************
** Function name:       siciarSetup
** Descriptions:        设置系统中断调整寄存器
** Input parameters:    uiPara: 见头文件
**                      uiIVGn: 见头文件
** Output parameters:   NONE
** Returned value:      NONE
*********************************************************************************************************/
void siciarSetup (uint32 uiPara, uint32 uiIVGn)
{
    switch (uiPara) {
    
    case INT_PLL:
        *pSIC_IAR0 &= ~(((uint32)0xf) << 0);
        *pSIC_IAR0 |= uiIVGn << 0;
        break;
    case INT_DMA_ERR: 
        *pSIC_IAR0 &= ~(((uint32)0xf) << 4);
        *pSIC_IAR0 |= uiIVGn << 4;
        break;
    case INT_PPI_ERR:
        *pSIC_IAR0 &= ~(((uint32)0xf) << 8);
        *pSIC_IAR0 |= uiIVGn << 8;
        break;        
    case INT_SPORT0_ERR:
        *pSIC_IAR0 &= ~(((uint32)0xf) << 12);
        *pSIC_IAR0 |= uiIVGn << 12;
        break;     
    case INT_SPORT1_ERR:
        *pSIC_IAR0 &= ~(((uint32)0xf) << 16);
        *pSIC_IAR0 |= uiIVGn << 16;
        break;     
    case INT_SPI_ERR:
        *pSIC_IAR0 &= ~(((uint32)0xf) << 20);
        *pSIC_IAR0 |= uiIVGn << 20;
        break;        
    case INT_UART_ERR:
        *pSIC_IAR0 &= ~(((uint32)0xf) << 24);
        *pSIC_IAR0 |= uiIVGn << 24;
        break;       
    case INT_RTC_ERR:
        *pSIC_IAR0 &= ~(((uint32)0xf) << 28);
        *pSIC_IAR0 |= uiIVGn << 28;
        break;        
    
    case INT_DMA0_PPI:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 0);
        *pSIC_IAR1 |= uiIVGn << 0;
        break;       
    case INT_DMA1_SPORT0_RX:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 4);
        *pSIC_IAR1 |= uiIVGn << 4;
        break; 
    case INT_DMA2_SPORT0_TX:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 8);
        *pSIC_IAR1 |= uiIVGn << 8;
        break; 
    case INT_DMA3_SPORT1_RX:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 12);
        *pSIC_IAR1 |= uiIVGn << 12;
        break; 
    case INT_DMA4_SPORT1_TX:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 16);
        *pSIC_IAR1 |= uiIVGn << 16;
        break; 
    case INT_DMA5_SPI:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 20);
        *pSIC_IAR1 |= uiIVGn << 20;
        break;      
    case INT_DMA6_UART_RX:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 24);
        *pSIC_IAR1 |= uiIVGn << 24;
        break;   
    case INT_DMA7_UART_TX:
        *pSIC_IAR1 &= ~(((uint32)0xf) << 28);
        *pSIC_IAR1 |= uiIVGn << 28;
        break;   

    case INT_T0:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 0);
        *pSIC_IAR2 |= uiIVGn << 0;
        break;             
    case INT_T1:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 4);
        *pSIC_IAR2 |= uiIVGn << 4;
        break;             
    case INT_T2:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 8);
        *pSIC_IAR2 |= uiIVGn << 8;
        break;             
    case INT_PF_A:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 12);
        *pSIC_IAR2 |= uiIVGn << 12;
        break;           
    case INT_PF_B:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 16);
        *pSIC_IAR2 |= uiIVGn << 16;
        break;           
    case INT_MDMA_S0:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 20);
        *pSIC_IAR2 |= uiIVGn << 20;
        break;        
    case INT_MDMA_S1:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 24);
        *pSIC_IAR2 |= uiIVGn << 24;
        break;        
    case INT_WTD:
        *pSIC_IAR2 &= ~(((uint32)0xf) << 28);
        *pSIC_IAR2 |= uiIVGn << 28;
        break;  
    default:
        break;   
    }       
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -