/****************************************Copyright (c)**************************************************** ** Guangzhou ZHIYUAN electronics Co.,LTD. ** ** http://www.embedtools.com ** **--------------File Info--------------------------------------------------------------------------------- ** File name: vicControl.h ** Latest modified Date: 2008-04-21 ** Latest Version: 1.0 ** Descriptions: VIC控制代码 ** **-------------------------------------------------------------------------------------------------------- ** Created by: Chenmingji ** Created date: 2008-04-21 ** Version: 1.0 ** Descriptions: The original version ** **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: ** Version: ** Descriptions: ** *********************************************************************************************************/ #ifndef _VIC_CONTROL_H_ #define _VIC_CONTROL_H_ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /********************************************************************************************************* 兼容定义,以后不要使用 *********************************************************************************************************/ #define VIC_Config VIC_IRQ_CFG #define pVIC_Config PVIC_IRQ_CFG #define SetVICIRQ vicIrqFuncSet #define FreeVICIRQ vicIrqFuncClr #define ReEnableVICIRQ vicIrqEnable #define DisableVICIRQ vicIrqDisable #define GetVICIRQState vicIrqStatusGet #define SetVICFIQ vicFiqSet #define FreeVICFIQ vicFiqClr /********************************************************************************************************* 状态定义 *********************************************************************************************************/ #define VIC_ISR_EN (1ul << 0) /* 中断使能 */ #define VIC_IRQ_SET (1ul << 1) /* IRQ中断 */ #define VIC_FIQ_SET (1ul << 2) /* FIQ中断 */ /********************************************************************************************************* VIC配置信息定义 *********************************************************************************************************/ struct vic_irq_cfg { INT32U ulChannel; /* 通道 */ INT32U ulMod; /* 中断触发类型,没有使用 */ INT32U ulFunctionAddr; /* ISR地址 */ INT32U ulFlg; /* 状态 */ }; /********************************************************************************************************* 中断触发类型值 宏定义 *********************************************************************************************************/ #define INT_LEVEL_TYPE_LOW 0x02 /* 低电平触发中断模式 */ #define INT_LEVEL_TYPE_HIGH 0x03 /* 高电平触发中断模式 */ #define INT_EDGE_TYPE_DOWN 0x00 /* 下降沿触发中断模式 */ #define INT_EDGE_TYPE_UP 0x01 /* 上升沿触发中断模式 */ /********************************************************************************************************* 中断通道号定义 *********************************************************************************************************/ /* * mic 部分中断向量号 */ #define VIC_CHANNEL_TIMER4 3 #define VIC_CHANNEL_TIMER5 4 #define VIC_CHANNEL_HSTIMER_INT 5 #define VIC_CHANNEL_WATCH_INT 6 #define VIC_CHANNEL_IIR3 7 #define VIC_CHANNEL_IIR4 8 #define VIC_CHANNEL_IIR5 9 #define VIC_CHANNEL_IIR6 10 #define VIC_CHANNEL_FLASH_INT 11 #define VIC_CHANNEL_SD1_INT 13 #define VIC_CHANNEL_LCD_INT 14 #define VIC_CHANNEL_SD0_INT 15 #define VIC_CHANNEL_TIMER0 16 #define VIC_CHANNEL_TIMER1 17 #define VIC_CHANNEL_TIMER2 18 #define VIC_CHANNEL_TIMER3 19 #define VIC_CHANNEL_SSP0 20 #define VIC_CHANNEL_SSP1 21 #define VIC_CHANNEL_I2S0 22 #define VIC_CHANNEL_I2S1 23 #define VIC_CHANNEL_IIR7 24 #define VIC_CHANNEL_IIR2 25 #define VIC_CHANNEL_IIR1 26 #define VIC_CHANNEL_MSTIMER_INT 27 #define VIC_CHANNEL_DMA_INT 28 #define VIC_CHANNEL_ETHERNET 29 /* * SIC1 部分中断向量号 */ #define VIC_CHANNEL_JTAG_COMM_TX 33 #define VIC_CHANNEL_JTAG_COMM_RX 34 #define VIC_CHANNEL_GPI_28 36 #define VIC_CHANNEL_TS_P 38 #define VIC_CHANNEL_ADC_INT 39 #define VIC_CHANNEL_TS_AUX 40 #define VIC_CHANNEL_SPI2_INT 44 #define VIC_CHANNEL_PLLUSB_INT 45 #define VIC_CHANNEL_PLLHCLK_INT 46 #define VIC_CHANNEL_PLL397_INT 49 #define VIC_CHANNEL_I2C_2_INT 50 #define VIC_CHANNEL_I2C_1_INT 51 #define VIC_CHANNEL_RTC_INT 52 #define VIC_CHANNEL_KEY_IRQ 54 #define VIC_CHANNEL_SPI1_INT 55 #define VIC_CHANNEL_SW_INT 56 #define VIC_CHANNEL_USB_OTG_TIMER_INT 57 #define VIC_CHANNEL_USB_OTG_ATX_INT_N 58 #define VIC_CHANNEL_USB_HOST_INT 59 #define VIC_CHANNEL_USB_DEV_DMA_INT 60 #define VIC_CHANNEL_USB_DEV_LP_INT 61 #define VIC_CHANNEL_USB_DEV_HP_INT 62 #define VIC_CHANNEL_USB_I2C_INT 63 /* * SIC2 部分中断向量号 */ #define VIC_CHANNEL_GPIO_00 64 #define VIC_CHANNEL_GPIO_01 65 #define VIC_CHANNEL_GPIO_02 66 #define VIC_CHANNEL_GPIO_03 67 #define VIC_CHANNEL_GPIO_04 68 #define VIC_CHANNEL_GPIO_05 69 #define VIC_CHANNEL_SPI2_DATIN 70 #define VIC_CHANNEL_U2_HCTS 71 #define VIC_CHANNEL_PN_GPIO 72 #define VIC_CHANNEL_GPI_08 73 #define VIC_CHANNEL_GPI_09 74 #define VIC_CHANNEL_GPI_19 75 #define VIC_CHANNEL_U7_HCTS 76 #define VIC_CHANNEL_GPI_07 79 #define VIC_CHANNEL_SDIO_INT_N 82 #define VIC_CHANNEL_U5_RX 83 #define VIC_CHANNEL_SPI1_DATIN 84 #define VIC_CHANNEL_GPI_00 86 #define VIC_CHANNEL_GPI_01 87 #define VIC_CHANNEL_GPI_02 88 #define VIC_CHANNEL_GPI_03 89 #define VIC_CHANNEL_GPI_04 90 #define VIC_CHANNEL_GPI_05 91 #define VIC_CHANNEL_GPI_06 92 #define VIC_CHANNEL_SYSCLK_MUX 95 typedef struct vic_irq_cfg VIC_IRQ_CFG; typedef struct vic_irq_cfg *PVIC_IRQ_CFG; /********************************************************************************************************* ** Function name: swiHandle ** Descriptions: SWI函数声明 ** input parameters: iHandle: 用于区分功能 ** 其他: 根据功能决定 ** output parameters: 根据功能决定 ** Returned value: 根据功能决定 *********************************************************************************************************/ __swi(0x01) unsigned int swiHandle (int iHandle, unsigned int, unsigned int, unsigned long); /********************************************************************************************************* ** Function name: vicIrqFuncSet ** Descriptions: 设置所选外设为FIQ,并设置其中断触发类型、中断服务函数地址,并使能中断 ** input parameters: uiChannel: 外设对应的中断通道号 ** uiMod: 中断触发类型 ** uiFuncAddr: 中断服务函数地址 ** output parameters: none ** Returned value: 1: 成功 ** 0: 失败 *********************************************************************************************************/ __inline unsigned int vicIrqFuncSet (unsigned int uiChannel, unsigned int uiMod, unsigned long ulFuncAddr) { return swiHandle(0x100, uiChannel, uiMod, ulFuncAddr); } /********************************************************************************************************* ** Function name: vicIrqFuncClr ** Descriptions: 清除所选外设的IRQ资源 ** input parameters: uiChannel: 外设对应的中断通道号 ** output parameters: none ** Returned value: 1: 成功 ** 0: 失败 *********************************************************************************************************/ __inline unsigned int vicIrqFuncClr (unsigned int uiChannel) { return swiHandle(0x101, uiChannel ,0 ,0); } /********************************************************************************************************* ** Function name: vicIrqEnable ** Descriptions: 使能相应外设的中断 ** input parameters: uiChannel: 外设对应的中断通道号 ** output parameters: none ** Returned value: 1: 成功 ** 0: 失败 *********************************************************************************************************/ __inline unsigned int vicIrqEnable (unsigned int uiChannel) { return swiHandle(0x102, uiChannel, 0, 0); } /********************************************************************************************************* ** Function name: vicIrqDisable ** Descriptions: 禁止相应外设的中断 ** input parameters: uiChannel: 外设对应的中断通道号 ** output parameters: none ** Returned value: 1: 成功 ** 0: 失败 *********************************************************************************************************/ __inline unsigned int vicIrqDisable (unsigned int uiChannel) { return swiHandle(0x103, uiChannel, 0, 0); } /********************************************************************************************************* ** Function name: vicIrqStatusGet ** Descriptions: 获取所选外设的中断通道号、优先级、中断服务函数地址及中断使能状态 ** input parameters: uiChannel: 外设对应的中断通道号 ** output parameters: pvicInfo: 配置信息 ** Returned value: 1: 成功 ** 0: 失败 *********************************************************************************************************/ __inline unsigned int vicIrqStatusGet (unsigned int uiChannel, PVIC_IRQ_CFG pvicInfo) { return swiHandle(0x104, uiChannel, (unsigned int)pvicInfo, 0); } /********************************************************************************************************* ** Function name: vicFiqSet ** Descriptions: 设置所选外设为FIQ,并设置其中断触发类型、中断服务函数地址,并使能中断 ** input parameters: uiChannel: 外设对应的中断通道号 ** uiMod: 中断触发类型 ** uiFuncAddr: 中断服务函数地址 ** output parameters: none ** Returned value: 1: 成功 ** 0: 失败 *********************************************************************************************************/ __inline unsigned int vicFiqSet (unsigned int uiChannel, unsigned int uiMod, unsigned long ulFuncAddr) { return swiHandle(0x105, uiChannel, uiMod, ulFuncAddr); } /********************************************************************************************************* ** Function name: vicFiqClr ** Descriptions: 清除所选中断通道号的FIQ中断 ** input parameters: uiChannel: 外设对应的中断通道号 ** output parameters: none ** Returned value: 1: 成功 ** 0: 失败 *********************************************************************************************************/ __inline unsigned int vicFiqClr (unsigned int uiChannel) { return swiHandle(0x106, uiChannel, 0, 0); } #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __TARGET_H */ /********************************************************************************************************* END FILE *********************************************************************************************************/