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

📄 tsip_interrupt.c

📁 dsp tms320c6486的csl例程
💻 C
字号:
/*  ============================================================================
 *   Copyright (c) Texas Instruments Inc 2002, 2003, 2004, 2005, 2006
 *
 *   Use of this software is controlled by the terms and conditions found
 *   in the license agreement under which this software has been supplied.
 *  ============================================================================
 */
#include "tsip_interrupt.h"
#include "cslr_tsip.h"
#include "csl_tsip.h"
//#include "val_util.h"

extern CSL_TsipHandle hTsip0;
Uint32 TX_Frame_Int_Count = 0;
Uint32 RX_Frame_Int_Count = 0;
Uint32 TX_SFrame_Int_Count = 0;
Uint32 RX_SFrame_Int_Count = 0;

Uint32 l = 0;

void setup_Tsip_Interrupt(void)
{
    CSL_IntcParam vectId1, vectId2, vectId3, vectId4;
//    CSL_IntcParam vectId8, vectId5, vectId6, vectId7;
//    CSL_IntcParam vectId9;
    CSL_IntcGlobalEnableState state;

    /* Setup the global Interrupt */
    context.numEvtEntries = 9;
    context.eventhandlerRecord = Record;
    CSL_intcInit(&context);

    /* Enable NMIs  */
    CSL_intcGlobalNmiEnable();

    /* Enable Global Interrupts  */
    CSL_intcGlobalEnable(&state);
    /* Opening a handle for the Tsip Event */
    vectId1 = CSL_INTC_VECTID_4;
/*    vectId2 = CSL_INTC_VECTID_5;
    vectId3 = CSL_INTC_VECTID_6;
    vectId4 = CSL_INTC_VECTID_7;
    vectId5 = CSL_INTC_VECTID_8;
    vectId6 = CSL_INTC_VECTID_9; 
    vectId7 = CSL_INTC_VECTID_10;
    vectId8 = CSL_INTC_VECTID_11;
    vectId9 = CSL_INTC_VECTID_12; */

    hIntcTsip1 = CSL_intcOpen(&intcTsip1Obj,
                             CSL_INTC_EVENTID_RSFINT0,
                             &vectId2,
                             NULL);

    hIntcTsip0 = CSL_intcOpen(&intcTsip0Obj,
                             CSL_INTC_EVENTID_RFSINT0,
                             &vectId1,
                             NULL);

    hIntcTsip2 = CSL_intcOpen(&intcTsip2Obj,
                             CSL_INTC_EVENTID_XFSINT0,
                             &vectId3,
                             NULL);
    hIntcTsip3 = CSL_intcOpen(&intcTsip3Obj,
                             CSL_INTC_EVENTID_XSFINT0,
                             &vectId4,
                             NULL);

    CSL_intcHookIsr(vectId1,&isr_tsip_rx_frame);
    CSL_intcHookIsr(vectId2,&isr_tsip_rx_sframe);
    CSL_intcHookIsr(vectId3,&isr_tsip_tx_frame);
    CSL_intcHookIsr(vectId4,&isr_tsip_tx_sframe);

    /* Clear the Interrupt */
    CSL_intcHwControl(hIntcTsip0,CSL_INTC_CMD_EVTCLEAR,NULL);
    CSL_intcHwControl(hIntcTsip1,CSL_INTC_CMD_EVTCLEAR,NULL);
    CSL_intcHwControl(hIntcTsip2,CSL_INTC_CMD_EVTCLEAR,NULL);
    CSL_intcHwControl(hIntcTsip3,CSL_INTC_CMD_EVTCLEAR,NULL);

    /* Enable the Interrupt */
    CSL_intcHwControl(hIntcTsip0,CSL_INTC_CMD_EVTENABLE,NULL);
    CSL_intcHwControl(hIntcTsip1,CSL_INTC_CMD_EVTENABLE,NULL);
    CSL_intcHwControl(hIntcTsip2,CSL_INTC_CMD_EVTENABLE,NULL);
    CSL_intcHwControl(hIntcTsip3,CSL_INTC_CMD_EVTENABLE,NULL);
}

void close_Tsip_Interrupt(void)
{
    CSL_intcClose(hIntcTsip0);
    CSL_intcClose(hIntcTsip1);
    CSL_intcClose(hIntcTsip2);
    CSL_intcClose(hIntcTsip3);
}

/*------------------------------------------------------------------*/
/* TSIP 0 Interrupt Service Routines                               */
/*------------------------------------------------------------------*/
interrupt void isr_tsip_rx_sframe()
{
    CSL_intcHwControl(hIntcTsip1 ,CSL_INTC_CMD_EVTCLEAR,(void*)CSL_INTC_EVENTID_RSFINT0);   //int33
    RX_SFrame_Int_Count++;
}

interrupt void isr_tsip_rx_frame()
{
    Uint32 argument;
    CSL_intcHwControl(hIntcTsip0 ,CSL_INTC_CMD_EVTCLEAR,(void*)CSL_INTC_EVENTID_RFSINT0);  //int32
    RX_Frame_Int_Count++;
    if (RX_SFrame_Int_Count == 1) {
       TsipDone = 1;
       argument = 1;
       CSL_tsipHwControl(hTsip0, CSL_TSIP_CMD_DIS_DMA, &argument);
    }
}

interrupt void isr_tsip_tx_frame()
{
    CSL_intcHwControl(hIntcTsip2 ,CSL_INTC_CMD_EVTCLEAR,(void*)CSL_INTC_EVENTID_XFSINT0);  //int34
    TX_Frame_Int_Count++;
}

interrupt void isr_tsip_tx_sframe()
{
    TX_SFrame_Int_Count++;
    CSL_intcHwControl(hIntcTsip3 ,CSL_INTC_CMD_EVTCLEAR,(void*)CSL_INTC_EVENTID_XSFINT0);  //int35
}

⌨️ 快捷键说明

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