📄 int.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 + -