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

📄 lcodu_interrupth.c

📁 是关于arm7的代码
💻 C
字号:
//*----------------------------------------------------------------------------
//* File Name           : lcodu_interrupth.c
//* Object              : 中断处理程序
//*
//* Creation            : wzm   11/10/2007
//*  Modif              : wp    26/10/2007
//*----------------------------------------------------------------------------


//*-----------------------------------------------------------------------------
//* Function Name       : timer0_c_irq_handler
//* Object              : Timer0 interrupt service routine,8ms,
//*                       used for rssi reporting
//* autor               : wang ping
//* Input Parameters    : none
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
__ramfunc void timer0_c_irq_handler(void)  
{


   unsigned int dummy;
    //* Acknowledge interrupt status
    dummy = AT91C_BASE_TC0->TC_SR;
    //* Suppress warning variable "dummy" was set but never used
    dummy = dummy;
       
    /*if ( (AT91C_BASE_PIOA->PIO_PDSR & PA8_LED ) == PA8_LED )  //
    {
        AT91C_BASE_PIOA->PIO_CODR= PA8_LED;
    }
    else
    {
        AT91C_BASE_PIOA->PIO_SODR= PA8_LED;;
    }*/

     timer0_flag=1;
}


//*-----------------------------------------------------------------------------
//* Function Name       : timer1_c_irq_handler
//* Object              : Timer1 interrupt service routine,
//*                       used for cheching the TX input alarm
//* autor               : wang ping
//* Input Parameters    : none
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
__ramfunc void timer1_c_irq_handler(void)
{

  unsigned int dummy;
  
    //* Acknowledge interrupt status
    dummy = AT91C_BASE_TC1->TC_SR;
    //* Suppress warning variable "dummy" was set but never used
    dummy = dummy;
   
  alarm_flag=0;
  

      if(adc_det_in<=v_ob1_30)  //cable alarm
     {
       v_odu_alarm[1]|=ALARM_TXINPUT;
       alarm_flag=1;
     }
     else v_odu_alarm[1]&=NORMAL_TXINPUT;
     

}


//*-----------------------------------------------------------------------------
//* Function Name       : US0_c_irq_handler
//* Object              : USART0 interrupt service routine,
//*                       reset the DMA buffer pointer.
//* autor               : wang ping
//* Input Parameters    : none
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
__ramfunc void US0_c_irq_handler(void)
{

 AT91F_PDC_ReceiveFrame ( AT91C_BASE_PDC_US0 , (char *) &us0_recv_dma[0], MAX_RECV_BUF,0,0);
        
//* Reset the satus bit
	 AT91C_BASE_US0->US_CR = AT91C_US_RSTSTA;
         
 /* //led for test     
         if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED1 ) == LED1 )
    {
        AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 );
    }
    else
    {
        AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1 );
    }
   */             
    

    
}


//*-----------------------------------------------------------------------------
//* Function Name       : US1_c_irq_handler
//* Object              : USART1 interrupt service routine,
//*                       reset the DMA buffer pointer.
//* autor               : wang ping
//* Input Parameters    : none
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
__ramfunc void US1_c_irq_handler(void)
{
;

   AT91F_PDC_ReceiveFrame ( AT91C_BASE_PDC_US1 , (char *) &us1_recv_dma[0], MAX_RECV_BUF,0,0);
//* Reset the satus b
   AT91C_BASE_US1->US_CR = AT91C_US_RSTSTA;


}


//*-----------------------------------------------------------------------------
//* Function Name       : ADC_c_irq_handler
//* Object              : ADC interrupt service routine,
//*                       reset the ADC DMA buffer pointer.
//*                       calculate the average value of the 16 converts of each 
//*                       channel 
//* autor               : wang ping
//* Input Parameters    : none
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
//__ramfunc
void ADC_c_irq_handler(void)
{
unsigned int i,j;

//Disable the clock and the interrupts
  AT91C_BASE_TC2->TC_CCR = AT91C_TC_CLKDIS;

adc_result_buf0=adc_result_buf1=adc_result_buf2=adc_result_buf3=adc_result_buf4=0;
j=0;
/*
    if ( (AT91C_BASE_PIOA->PIO_PDSR & PA8_LED ) == PA8_LED )  //
    {
        AT91C_BASE_PIOA->PIO_CODR= PA8_LED;
    }
    else
    {
        AT91C_BASE_PIOA->PIO_SODR= PA8_LED;;
    }
*/    
for(i=0;i<16;i++)
{
  adc_result_buf0+=adc_dma[j++];
  adc_result_buf0+=((adc_dma[j++]&0x03)<<8);//det_out
  adc_result_buf1+=adc_dma[j++];
  adc_result_buf1+=((adc_dma[j++]&0x03)<<8);//temp
  adc_result_buf2+=adc_dma[j++];
  adc_result_buf2+=((adc_dma[j++]&0x03)<<8);//rssi1
  adc_result_buf3+=adc_dma[j++];
  adc_result_buf3+=((adc_dma[j++]&0x03)<<8);//rssi2
  adc_result_buf4+=adc_dma[j++];
  adc_result_buf4+=((adc_dma[j++]&0x03)<<8);//det_in
}
  adc_result_buf0>>=4; /*16次平均*/
  adc_result_buf1>>=4;
  adc_result_buf2>>=4;
  adc_result_buf3>>=4;
  adc_result_buf4>>=4;
  
//AT91C_BASE_ADC->ADC_CR = AT91C_ADC_SWRST;  
AT91F_PDC_ReceiveFrame ( AT91C_BASE_PDC_ADC , (char *) &adc_dma[0], MAX_ADC_BUF>>1,0,0);

// Start the timer counter 
	AT91C_BASE_TC2->TC_CCR = (AT91C_TC_CLKEN |AT91C_TC_SWTRG ) ; 

//led for test
/*
         if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED1 ) == LED1 )
    {
        AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 );
    }
    else
    {
        AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1 );
    }

*/
    

;
}

//*-----------------------------------------------------------------------------
//* Function Name       : IRQ0_c_irq_handler
//* Object              : tx synthlock alarm
//*                       negative edge trige
//* autor               : wang ping  29/10/2007
//* Input Parameters    : none
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
__ramfunc void IRQ0_c_irq_handler(void)
{

// if((AT91C_BASE_PIOA->PIO_PDSR & BIT20 ) == BIT20 )
  {
    v_odu_alarm[0]|=ALARM_TXSYNTHLOCK;
    alarm_flag=2;
 //   v_txmute=TX_MUTED;
//    v_cfg_data[2].value[0]=v_txmute;
#if(__NOT_DEBUG__)
    /*mute the rf*/
    AT91C_BASE_PIOA->PIO_SODR=PA12_MUTE;     //set_mute
#endif
  }
  /*else
  {
    v_odu_alarm[0]&=NORMAL_TXSYNTHLOCK;
    v_rpsalarm&=NORMAL_TXSYNTHLOCK;
  }*/
}

//*-----------------------------------------------------------------------------
//* Function Name       : IRQ1_c_irq_handler
//* Object              : rx synthlock alarm
//*                       negative edge trige
//* autor               : wang ping  29/10/2007
//* Input Parameters    : none
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
__ramfunc void IRQ1_c_irq_handler(void)
{
   //if((AT91C_BASE_PIOA->PIO_PDSR & BIT30 ) == BIT30 )
   {
     v_odu_alarm[0]|=ALARM_RXSYNTHLOCK;
     //v_txmute=TX_MUTED;
     //set_mute(TX_MUTED);
     alarm_flag=1;
   }
  /* else
   {
     v_odu_alarm[0]&=NORMAL_RXSYNTHLOCK;
     v_rpsalarm&=NORMAL_RXSYNTHLOCK;
   }*/
}

⌨️ 快捷键说明

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