#include <Cdef21369.h>
#include <def21369.h>
#define SRUDEBUG
#include <sru.h>
#include <stdio.h>
#include <signal.h>
#include <sysreg.h>
void DAIH_Trans(int sig_int);
void DPI_Trans(int sig_int);
void DAIH_Trans(int sig_int)
{
int iTest;
iTest = (*pDAI_IRPTL_H); // reading pDAI_IRPTL_H clears the latched interrupt.
if( SRU_EXTMISCA2_INT == iTest )
{
printf("hello DAI!\n");
}
}
void DPI_Trans(int sig_int)
{
int iTest;
iTest = (*pDPI_IRPTL); // reading pDPI_IRPTL clears the latched interrupt.
if( EXT_MISC_0_INT == iTest )
{
printf("hello DPI!\n");
}
}
int main( void )
{
SRU(LOW,PBEN20_I);
SRU(DAI_PB20_O,MISCA2_I);
SRU(LOW,DAI_PB20_I);
SRU2(LOW,DPI_PBEN14_I);
SRU2(DPI_PB14_O,MISCB0_I);
SRU2(LOW,DPI_PB14_I);
(*pDAI_IRPTL_PRI) = (SRU_EXTMISCA2_INT); //unmask individual interrupts
(*pDAI_IRPTL_RE) = (SRU_EXTMISCA2_INT); //make sure interrupts latch on the rising edge
(*pDPI_IRPTL_RE) = (EXT_MISC_0_INT);
sysreg_bit_clr(sysreg_IRPTL,DAIHI|DPII);
//Set up interrupt priorities
sysreg_bit_set(sysreg_IMASK, DAIHI|DPII); //make DAI DPI interrupts high priority
sysreg_bit_set(sysreg_MODE1, IRPTEN ); //enable global interrupts
interrupt(SIG_DAIH,DAIH_Trans); // set the ISR for DAIH
interrupt(SIG_DPI,DPI_Trans);
while(1)
asm("idle;");
}
这个程序分别 产生dai中断和dpi中断,,,已试过 ok,,希望对你有用 DPI中断源为MISCB 从0到7 8个中断源
「该帖子被 btbt208 在 2014-03-05 09:50:39 编辑过」