📄 intc.c
字号:
@@
@@ [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 + -