导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教各位大侠关于S3C44B0的中断问题[fkai8025]

 *第28922篇: 请教各位大侠关于S3C44B0的中断问题

  
楼 主:fkai8025 2005年1月6日10:24
 请教各位大侠关于S3C44B0的中断问题
各位ARM高手,我刚刚接触ARM,我用的ARM7的S3C44B0的芯片,现在中断程序不好用,不知道为什么希望各位高手能帮忙看一看:
void Main(void)
{
 int TEMP_rEXTINT;
 unsigned int k;
     //设置G口为外部中断口
     *((unsigned char*)0x2000000) =  0xff;
     for(k=0;k  <60000;k++);
     *((unsigned char*)0x2000000) =  0x0f;
     for(k=0;k  <60000;k++);
     rINTMOD=0;
     rINTMSK=~(BIT_GLOBAL | BIT_EINT0 | BIT_EINT1);
 rPCONG=0x57ff;  //PortG[0~4] EINT MODE,PortG[5~7] OUT设置中断接口状态
    rINTCON=0x5; // non Vectored interrupt mode , IRQ mode enable
 
 TEMP_rEXTINT=rEXTINT;//保存外部中断控制寄存器的值
    rEXTINT=(TEMP_rEXTINT & 0xffffff22) | 0xffffff22;  //EINT[0,1] will be falling edge triggered.

    pISR_EINT0=(int)Eint0Isr;//设置外部0的中断向量
    pISR_EINT1=(int)Eint1Isr;//设置外部1的中断向量


    rEXTINPND=0xf;  //clear EXTINPND reg.
    rI_ISPC= BIT_EINT0 | BIT_EINT1; //clear pending_bit
    
    rINTMSK=~(BIT_GLOBAL | BIT_EINT0 | BIT_EINT1);  //External interrupt0,1 check..
//    Delay(20);
}
/********************************************************************
// Function name : Eint0Isr
// Description     : eint0 isr
// Return type  : void
// Argument         : void
*********************************************************************/
void Eint0Isr(void)

    char i;
    unsigned int j;
    for(i=0;i  <5;i++)
     {
      switch(i)
      {   
          case 0: *((unsigned char*)0x2000000) =  0xff;  break;
       case 1: *((unsigned char*)0x2000000) =  0x7f;  break;
       case 2: *((unsigned char*)0x2000000) =  0x3f;  break;
       case 3: *((unsigned char*)0x2000000) =  0x1f;  break;
       case 4: *((unsigned char*)0x2000000) =  0x0f;  break; 
       default: break;      
      } 
      for(j=0;j  <60000;j++);    
  }    
 rI_ISPC= BIT_EINT0; //clear pending_bit 
}
/********************************************************************
// Function name : Eint1Isr
// Description     : eint1 isr
// Return type  : void
// Argument         : void
*********************************************************************/
void Eint1Isr(void)
{   
    char i;
    unsigned int j;
    for(i=0;i  <5;i++)
     {
      switch(i)
      {   
          case 0: *((unsigned char*)0x2000000) =  0xff;  break;
       case 1: *((unsigned char*)0x2000000) =  0x7f;  break;
       case 2: *((unsigned char*)0x2000000) =  0x3f;  break;
       case 3: *((unsigned char*)0x2000000) =  0x1f;  break;
       case 4: *((unsigned char*)0x2000000) =  0x0f;  break; 
       default: break;      
      } 
      for(j=0;j  <60000;j++);    
  } 
 rI_ISPC= BIT_EINT1; //clear pending_bit
}
我的联系方式:qq25195314,也希望和各位交流交流!!谢谢!

  
2楼:fkai8025 2005年1月6日14:49
 各位大侠,怎么没有人理小弟呀,小弟先在这里谢过了!!!!帮帮我吧
  
3楼:fkai8025 2005年1月6日17:50
 谢谢大家,帮忙看看这段程序,哪怕是给我 点建议也可以!
  
4楼:chorlio 2006年4月21日09:10
 没时间细看,几点建议
1。再次检查寄存器的配置
2。中断服务程序最好加__irq关键字
3。在中断服务程序里放一个串口发送的语句,表明是否进中断了

>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:紧急求助!问高手

[下一篇主题]:写程序时,PHILIPS 的   P89V51RD2&nbs