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

📄 intc.c

📁 嵌入式系统
💻 C
📖 第 1 页 / 共 2 页
字号:
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

unsigned long apd_INTCReadFIQEnable(void)
{
    return (*APD_INTCFIQENABLE);
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCEnableIRQ
@@
@@ [Summary]    : This function enables the corresponding IRQ interrupt sources
@@
@@ [Argument]   : interrupt_src :   Specify which interrupt type to check
@@              
@@                APD_INTC_TIMER0 for Timer0 interrupt
@@                APD_INTC_TIMER1 for Timer1 interrupt
@@                APD_INTC_TIMER2 for Timer2 interrupt
@@                APD_INTC_TIMER3 for Timer3 interrupt
@@                APD_INTC_UART0 for UART channel 0 interrupt
@@                APD_INTC_UART1 for UART channel 1 interrupt
@@                APD_INTC_DMA0 for DMA channel 0 interrupt
@@                APD_INTC_DMA1 for DMA channel 1 interrupt
@@                APD_INTC_PLL for PLL interrupt
@@                APD_INTC_WDT for WDT interrupt
@@                APD_INTC_RTCALM for RTCCALM interrupt
@@                APD_INTC_RTCIRQF for RTCIRQF interrupt
@@                APD_INTC_PWM0 for PWM channel 0 interrupt
@@                APD_INTC_PWM1 for PWM channel 1 interrupt
@@                APD_INTC_PWM2 for PWM channel 2 interrupt
@@                APD_INTC_PWM3 for PWM channel 3 interrupt
@@                APD_INTC_SSP for SPI interrupt
@@                APD_INTC_NOT_DEF for NOT_DEF interrupt
@@                APD_INTC_LCDC for LCDC interrupt
@@                APD_INTC_NOT_DEF1 for NOT_DEF1 interrupt
@@                APD_INTC_INT0 for INT0 interrupt
@@                APD_INTC_INT1 for INT1 interrupt
@@                APD_INTC_INT2 for INT2 interrupt
@@                APD_INTC_INT3 for INT3 interrupt
@@                APD_INTC_INT4 for INT4 interrupt
@@                APD_INTC_INT5 for INT5 interrupt
@@                APD_INTC_INT6 for INT6 interrupt
@@                APD_INTC_INT7 for INT7 interrupt
@@                APD_INTC_ALL for ALL interrupt
@@
@@                You can 'OR' them together for example,
@@                APD_INTC_UART0 | APD_INTC_TIMER0
@@
@@ [Return]     : None
@@
@@ [Desc]       : Enable specfied IRQ sources according to the argument.
@@
@@ [Note]       : (1) WDT cannot be programmed as IRQ
@@                (2) The Interrupt Channel Assignment is totally different between LH79531,LH79532 and LH79533.
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

void apd_INTCEnableIRQ(unsigned long interrupt_src)
{
    *APD_INTCIRQENABLESET = interrupt_src;
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCDisableIRQ
@@
@@ [Summary]    : This function disables the corresponding IRQ interrupt sources
@@
@@ [Argument]   : interrupt_src : Specify which interrupt type to check
@@                
@@                APD_INTC_TIMER0 for Timer0 interrupt
@@                APD_INTC_TIMER1 for Timer1 interrupt
@@                APD_INTC_TIMER2 for Timer2 interrupt
@@                APD_INTC_TIMER3 for Timer3 interrupt
@@                APD_INTC_UART0 for UART channel 0 interrupt
@@                APD_INTC_UART1 for UART channel 1 interrupt
@@                APD_INTC_DMA0 for DMA channel 0 interrupt
@@                APD_INTC_DMA1 for DMA channel 1 interrupt
@@                APD_INTC_PLL for PLL interrupt
@@                APD_INTC_WDT for WDT interrupt
@@                APD_INTC_RTCALM for RTCCALM interrupt
@@                APD_INTC_RTCIRQF for RTCIRQF interrupt
@@                APD_INTC_PWM0 for PWM channel 0 interrupt
@@                APD_INTC_PWM1 for PWM channel 1 interrupt
@@                APD_INTC_PWM2 for PWM channel 2 interrupt
@@                APD_INTC_PWM3 for PWM channel 3 interrupt
@@                APD_INTC_SSP for SPI interrupt
@@                APD_INTC_NOT_DEF for NOT_DEF interrupt
@@                APD_INTC_LCDC for LCDC interrupt
@@                APD_INTC_NOT_DEF1 for NOT_DEF1 interrupt
@@                APD_INTC_INT0 for INT0 interrupt
@@                APD_INTC_INT1 for INT1 interrupt
@@                APD_INTC_INT2 for INT2 interrupt
@@                APD_INTC_INT3 for INT3 interrupt
@@                APD_INTC_INT4 for INT4 interrupt
@@                APD_INTC_INT5 for INT5 interrupt
@@                APD_INTC_INT6 for INT6 interrupt
@@                APD_INTC_INT7 for INT7 interrupt
@@                APD_INTC_ALL for ALL interrupt
@@
@@                You can 'OR' them together for example,
@@                APD_INTC_UART0 | APD_INTC_TIMER0
@@
@@ [Return]     : None
@@
@@ [Desc]       : Disable specifed IRQ sources according to the argument.
@@
@@ [Note]       : (1) WDT cannot be programmed as IRQ
@@                (2) The Interrupt Channel Assignment is totally different between LH79531,LH79532 and LH79533.
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

void apd_INTCDisableIRQ(unsigned long interrupt_src)
{
    *APD_INTCIRQENABLECLEAR = interrupt_src;
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCEnableFIQ
@@
@@ [Summary]    : This function enables the corresponding FIQ interrupt sources
@@
@@ [Argument]   : interrupt_src : Specify which interrupt type to check
@@              
@@                APD_INTC_TIMER0 for Timer0 interrupt
@@                APD_INTC_TIMER1 for Timer1 interrupt
@@                APD_INTC_TIMER2 for Timer2 interrupt
@@                APD_INTC_TIMER3 for Timer3 interrupt
@@                APD_INTC_UART0 for UART channel 0 interrupt
@@                APD_INTC_UART1 for UART channel 1 interrupt
@@                APD_INTC_DMA0 for DMA channel 0 interrupt
@@                APD_INTC_DMA1 for DMA channel 1 interrupt
@@                APD_INTC_PLL for PLL interrupt
@@                APD_INTC_WDT for WDT interrupt
@@                APD_INTC_RTCALM for RTCCALM interrupt
@@                APD_INTC_RTCIRQF for RTCIRQF interrupt
@@                APD_INTC_PWM0 for PWM channel 0 interrupt
@@                APD_INTC_PWM1 for PWM channel 1 interrupt
@@                APD_INTC_PWM2 for PWM channel 2 interrupt
@@                APD_INTC_PWM3 for PWM channel 3 interrupt
@@                APD_INTC_SSP for SPI interrupt
@@                APD_INTC_NOT_DEF for NOT_DEF interrupt
@@                APD_INTC_LCDC for LCDC interrupt
@@                APD_INTC_NOT_DEF1 for NOT_DEF1 interrupt
@@                APD_INTC_INT0 for INT0 interrupt
@@                APD_INTC_INT1 for INT1 interrupt
@@                APD_INTC_INT2 for INT2 interrupt
@@                APD_INTC_INT3 for INT3 interrupt
@@                APD_INTC_INT4 for INT4 interrupt
@@                APD_INTC_INT5 for INT5 interrupt
@@                APD_INTC_INT6 for INT6 interrupt
@@                APD_INTC_INT7 for INT7 interrupt
@@                APD_INTC_ALL for ALL interrupt
@@
@@                You can 'OR' them together for example,
@@                APD_INTC_UART0 | APD_INTC_TIMER0
@@
@@ [Return]     : None
@@
@@ [Desc]       : Enable specfied FIQ sources according to the argument.
@@
@@ [Note]       : The Interrupt Channel Assignment is totally different between LH79531,LH79532 and LH79533.
@@
@@ [History]    : 
@@ [END]
******************************************************************************/

void apd_INTCEnableFIQ(unsigned long interrupt_src)
{
    *APD_INTCFIQENABLESET = interrupt_src;
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCDisableFIQ
@@
@@ [Summary]    : This function disables the corresponding FIQ interrupt sources
@@
@@ [Argument]   : interrupt_src : Specify which interrupt type to check
@@                
@@                APD_INTC_TIMER0 for Timer0 interrupt
@@                APD_INTC_TIMER1 for Timer1 interrupt
@@                APD_INTC_TIMER2 for Timer2 interrupt
@@                APD_INTC_TIMER3 for Timer3 interrupt
@@                APD_INTC_UART0 for UART channel 0 interrupt
@@                APD_INTC_UART1 for UART channel 1 interrupt
@@                APD_INTC_DMA0 for DMA channel 0 interrupt
@@                APD_INTC_DMA1 for DMA channel 1 interrupt
@@                APD_INTC_PLL for PLL interrupt
@@                APD_INTC_WDT for WDT interrupt
@@                APD_INTC_RTCALM for RTCCALM interrupt
@@                APD_INTC_RTCIRQF for RTCIRQF interrupt
@@                APD_INTC_PWM0 for PWM channel 0 interrupt
@@                APD_INTC_PWM1 for PWM channel 1 interrupt
@@                APD_INTC_PWM2 for PWM channel 2 interrupt
@@                APD_INTC_PWM3 for PWM channel 3 interrupt
@@                APD_INTC_SSP for SPI interrupt
@@                APD_INTC_NOT_DEF for NOT_DEF interrupt
@@                APD_INTC_LCDC for LCDC interrupt
@@                APD_INTC_NOT_DEF1 for NOT_DEF1 interrupt
@@                APD_INTC_INT0 for INT0 interrupt
@@                APD_INTC_INT1 for INT1 interrupt
@@                APD_INTC_INT2 for INT2 interrupt
@@                APD_INTC_INT3 for INT3 interrupt
@@                APD_INTC_INT4 for INT4 interrupt
@@                APD_INTC_INT5 for INT5 interrupt
@@                APD_INTC_INT6 for INT6 interrupt
@@                APD_INTC_INT7 for INT7 interrupt
@@                APD_INTC_ALL for ALL interrupt
@@
@@                You can 'OR' them together for example,
@@                APD_INTC_UART0 | APD_INTC_TIMER0
@@
@@ [Return]     : None
@@
@@ [Desc]       : Disable specifed FIQ sources accroding to the argument.
@@
@@ [Note]       : The Interrupt Channel Assignment is totally different between LH79531, LH79532 and LH79533.
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

void apd_INTCDisableFIQ(unsigned long interrupt_src)
{
    *APD_INTCFIQENABLECLEAR = interrupt_src;
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCReadIRQStatus
@@
@@ [Summary]    : This function returns the contents of APD_INTCIRQSTATUS register
@@
@@ [Argument]   : None
@@
@@ [Return]     : APD_INTCIRQSTATUS register
@@
@@ [Desc]       : Reads the contents of APD_INTCIRQSTATUS register
@@
@@ [Note]       :
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

unsigned long apd_INTCReadIRQStatus(void)
{
    return (*APD_INTCIRQSTATUS);
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCReadFIQStatus
@@
@@ [Summary]    : This function returns the contents of APD_INTCFIQSTATUS register
@@
@@ [Argument]   : None
@@
@@ [Return]     : APD_INTCFIQSTATUS register
@@
@@ [Desc]       : Reads the contents of APD_INTCFIQSTATUS register
@@
@@ [Note]       :
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

unsigned long apd_INTCReadFIQStatus(void)
{
    return (*APD_INTCFIQSTATUS);
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCReadIRQRawStatus
@@
@@ [Summary]    : This function returns the contents of APD_INTCIRQRAWSTATUS register
@@
@@ [Argument]   : None
@@
@@ [Return]     : APD_INTCIRQRAWSTATUS register
@@
@@ [Desc]       : Reads the contents of APD_INTCIRQRAWSTATUS register
@@
@@ [Note]       :
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

unsigned long apd_INTCReadIRQRawStatus(void)
{
    return (*APD_INTCIRQRAWSTATUS);
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCReadFIQRawStatus
@@
@@ [Summary]    : This function returns the contents of APD_INTCFIQRAWSTATUS register
@@
@@ [Argument]   : None
@@
@@ [Return]     : APD_INTCFIQRAWSTATUS register
@@
@@ [Desc]       : Reads the contents of APD_INTCFIQRAWSTATUS register
@@
@@ [Note]       :
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/

unsigned long apd_INTCReadFIQRawStatus(void)
{
    return (*APD_INTCFIQRAWSTATUS);
}

/******************************************************************************
@@
@@ [Name]       : apd_INTCConfigure
@@
@@ [Summary]    : This function is to configure the external interrupts
@@
@@ [Argument]   : None
@@
@@ [Return]     : None
@@
@@ [Desc]       : Configure INTCCONFIG0 & INTCCONFIG1 registers according to
@@                APD_INTC_INTTYPE
@@
@@        Configuration Registers   |
@@       INTCCONFIG0|  INTCCONFIG1  |    Interrupt Type
@@      --------------------------------------------------------------------
@@            0     |   0           |    Low Level Trigger
@@            0     |   1           |    High Level Trigger
@@            1     |   1           |    Rising Edge Trigger
@@            1     |   0           |    Falling Edge Trigger
@@
@@ [Note]       : (1) User can configure the external interrupt types in file apd_intc_sys_def.h
@@
@@ [History]    : 
@@
@@ [END]
******************************************************************************/
void apd_INTCConfigure(void)
{
    unsigned long int_mask;

    int_mask = APD_INTC_INTTYPE;

    *APD_INTCCONFIG0 = APD_INTCCONFIG_MASK & int_mask;
    *APD_INTCCONFIG1 = APD_INTCCONFIG_MASK & (int_mask << APD_INTC_TRIG_OFST);
}

⌨️ 快捷键说明

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