亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? intc_example1.c

?? dsp tms320c6486的csl例程
?? C
字號:
/*  ============================================================================
 *   Copyright (c) Texas Instruments Inc 2002, 2003, 2004, 2005
 *
 *   Use of this software is controlled by the terms and conditions found in the
 *   license agreement under which this software has been supplied.
 *   ===========================================================================
 */

/** ============================================================================
 *   @file  Intc_example.c
 *
 *   @path  $(CSLPATH)\example\c64xplus\intc\intc_example1\src
 *
 *   @desc  Example of INTC
 *
 *  ============================================================================
 *   @n Target Platform: TCI6486 VDB
 *  ============================================================================
 *   @n <b> Example Description </b>
 *   @n The example shows how to use INTC CSL with EDMA module.
 *      This is an example of the CSL Interrupt Controller usage.
 *      A event object is opened and is simply hooked up to a CPU vector. 
 *      An event hnadler is associaed with it. This example, 
 *      1. Initalizes the intc CSL required with proper ISR
 *      2. Intializes and opens  EDMA 
 *      3. Associates EDMA event handler with the INTC routine 
 *         CSL_intcPlugEventHandler ()
 *      4. Enables the edma interrupt
 *      5. Waits for edma interrupt generate.
 *      6. Compares the transferred data
 *      7. Displays the messages based on step 6
 *
 *=============================================================================
 *      
 *   <b> Procedure to run the example </b>
 *   @verbatim
 *      1. Configure the CCS setup to work with the emulator being used
 *      2. Please refer CCS manual for setup configuration and loading 
 *         proper GEL file
 *      3. Launch CCS window
 *      4. Open project Intc_example1.pjt
 *      5. Build the project and load the .out file of the project.
 *          
 *   @endverbatim
 *
 */

/* =============================================================================
 *  Revision History
 *  ===============
 *  30-Jun-2004 Ruchika Kharwar File Created
 *
 *  22-Jul-2005 ds changed to support edma3 csl
 *
 *  16-Dec-2005 ds     Updated documetation
 * =============================================================================
 */

#include <stdio.h>
#include <csl_edma3.h>
#include <csl_intc.h>
#include <soc.h>

/* Pragma to edma tcc handler table */
#pragma DATA_SECTION(TccHandlerTable,".testMem");

/* Global variable to Edma Tcc handler table */
typedef void (* EdmaTccHandler)(void);
EdmaTccHandler TccHandlerTable[64];

/* Macro for tcc handler table */
#define InvokeHandle(num)       TccHandlerTable[num]()

/* Funtion forwards, for which registers individual event handlers in a table */
void EdmaEventHook(Uint16 , EdmaTccHandler);
void eventEdmaHandler(void *);

/* Function forwards */
void tcc1Fxn();
void intc_example (void);

/* Intc variable declarartion */
CSL_IntcContext             intcContext; 
CSL_IntcEventHandlerRecord  EventHandler[30];
CSL_IntcObj                 intcObjEdma;
CSL_IntcHandle              hIntcEdma; 
CSL_IntcGlobalEnableState   state;
CSL_IntcEventHandlerRecord  EventRecord;
CSL_IntcParam               vectId;

/* Global variable declarations */ 
Uint8             srcBuff[512];
Uint8             dstBuff[512];

volatile Uint32   intFlag = 0;  
CSL_Edma3Handle   hModule;  


/*
 * =============================================================================
 *   @func   main
 *
 *   @desc
 *     This is the main routine,which invokes the example
 * =============================================================================
 */    
void main()
{   
    printf ("Running Interrupt Example\n");
    
    intc_example ();

    return;
}

/*
 * =============================================================================
 *   @func  intc_example
 *  
 *   @arg   None
 *
 *   @desc
 *      This is an example of the CSL Interrupt Controller usage.
 *      A event object is opened and is simply hooked up to a CPU vector. 
 *      An event hnadler is associaed with it. 
 *          1. Initalizes the intc CSL required with proper ISR
 *          2. Intializes and opens  EDMA 
 *          3. Associates EDMA event handler with the INTC routine 
 *             CSL_intcPlugEventHandler ()
 *          4. Enables the edma interrupt
 *          5. Waits for edma interrupt generate.
 *          6. Compares the transferred data
 *          7. Closes the edma module and edma channel.
 *          8. Closes the Intc module
 *
 *   @return
 *      None
 *   
 *   @eg
 *      intc_example ();
 * =============================================================================
 */
void intc_example (void)
{
    CSL_Edma3HwSetup        hwSetup;
    CSL_Edma3Obj            edmaObj;
    CSL_Edma3ParamHandle    hParamBasic;
    CSL_Edma3ChannelObj     chObj;
    CSL_Edma3CmdIntr        regionIntr;
    CSL_Edma3CmdDrae        regionAccess;
    CSL_Edma3ChannelHandle  hChannel;
    CSL_Edma3ParamSetup     myParamSetup;
    CSL_Edma3Context        context;
    CSL_Edma3ChannelAttr    chAttr;
    CSL_Status              status;
    Uint32                  loopIndex;
    Uint32                  passStatus = 1;    
    CSL_Edma3HwDmaChannelSetup dmahwSetup[CSL_EDMA3_NUM_DMACH] = \
                                            CSL_EDMA3_DMACHANNELSETUP_DEFAULT;
    /* Initialize Data Buffers */
    for (loopIndex = 0; loopIndex < 512;loopIndex++) {
        srcBuff[loopIndex] = loopIndex;
        dstBuff[loopIndex] = 0;
    }      
    
    /* Edma CSL initialization */
    CSL_edma3Init(&context);
    

    /* Intc module initialization */
    intcContext.eventhandlerRecord = EventHandler;
    intcContext.numEvtEntries      = 10;
    status = CSL_intcInit(&intcContext);
    if (status != CSL_SOK) {
        printf("Intc initialization failed\n");
        return;
    }
    
    /* Enable NMIs */
    status = CSL_intcGlobalNmiEnable();
    if (status != CSL_SOK) {
        printf("Intc global NMI enable failed\n");
        return;
    }
    
    /* Enable global interrupts */
    status = CSL_intcGlobalEnable(&state);
    if (status != CSL_SOK) {
        printf ("Intc global enable failed\n");
        return;
    }
    
    /* Opening intc module */
    vectId = CSL_INTC_VECTID_4;
    hIntcEdma = CSL_intcOpen (&intcObjEdma, CSL_INTC_EVENTID_EDMA3CC_GINT, \
                              &vectId , NULL);
    if (hIntcEdma == NULL) {
        printf("Intc open failed\n");
        return;
    }
     
    /* Opening a edma module */
    hModule = CSL_edma3Open(&edmaObj,CSL_EDMA3,NULL,&status); 
    

    /* Edma module setup */
    hwSetup.dmaChaSetup  = &dmahwSetup[0];
    hwSetup.qdmaChaSetup = NULL;
    CSL_edma3HwSetup(hModule,&hwSetup);
        
    /* Setup the DRAE Masks
     * DRAE Enable(Bits 0-15) for the Shadow Region 1. 
     */
    regionAccess.region = CSL_EDMA3_REGION_1 ;
    regionAccess.drae =   0xFFFF ;   
    regionAccess.draeh =  0x0000 ;
    status = CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE, \
                                 &regionAccess); 
    
    /* Edma channel open */
    chAttr.regionNum = CSL_EDMA3_REGION_1;
    chAttr.chaNum = CSL_EDMA3_CHA_GPINT0;
    hChannel = CSL_edma3ChannelOpen(&chObj,CSL_EDMA3,&chAttr,&status);  
    
        
    /* Parameter Set Setup */
    hParamBasic = CSL_edma3GetParamHandle(hChannel,0,NULL);
    myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                             CSL_EDMA3_TCCH_DIS, \
                                             CSL_EDMA3_ITCINT_DIS, \
                                             CSL_EDMA3_TCINT_EN,\
                                             1,CSL_EDMA3_TCC_NORMAL,\
                                             CSL_EDMA3_FIFOWIDTH_NONE, \
                                             CSL_EDMA3_STATIC_DIS, \
                                             CSL_EDMA3_SYNC_A, \
                                             CSL_EDMA3_ADDRMODE_INCR, \
                                             CSL_EDMA3_ADDRMODE_INCR);  
    myParamSetup.srcAddr = (Uint32)srcBuff;         
    myParamSetup.aCntbCnt = CSL_EDMA3_CNT_MAKE(256,1);       
    myParamSetup.dstAddr = (Uint32)dstBuff;        
    myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(0,0);     
    myParamSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(CSL_EDMA3_LINK_NULL,1);     
    myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,0);     
    myParamSetup.cCnt = 1;          
    
    CSL_edma3ParamSetup(hParamBasic,&myParamSetup);
    
    /* Association of an EDMA event handler with the INTC routine */
    EventRecord.handler = &eventEdmaHandler;
    EventRecord.arg = (void*)(hModule);
    status = CSL_intcPlugEventHandler(hIntcEdma,&EventRecord);
    if (status != CSL_SOK) {
        printf("Intc plug event handler failed\n");
        return;
    }
    
    /* Enabling event edma  */
    status = CSL_intcHwControl(hIntcEdma,CSL_INTC_CMD_EVTENABLE,NULL);
    if (status != CSL_SOK) {
        printf("Intc CSL_INTC_CMD_EVTENABLE command failed\n");
        return;
    }
    
    /* Hook up the EDMA Event with an completion code function handler */
    EdmaEventHook(1, tcc1Fxn);  

    /* Enable Interrupts */
    regionIntr.region = CSL_EDMA3_REGION_1 ;
    regionIntr.intr = 0x2 ;
    regionIntr.intrh = 0x0 ;
    CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTR_ENABLE,&regionIntr);
       

    /* Enable Channel :- though not required for a manual trigger */
    status = CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_ENABLE, \
                                       NULL);    
    
    /* Manually trigger the channel */
    status = CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);
       
    /* Wait for generation of interrut */
    while (!intFlag);   
   
    /* Verify destination buffer to be equal to the source buffer */
    for (loopIndex = 0; loopIndex < 256; loopIndex++)
        if (srcBuff[loopIndex] != dstBuff[loopIndex])
            passStatus = 0;  
    
    if (passStatus != 0) {
        printf ("<<Example Passed>>: Interrupt example passed\n");
    }   
    else {
        printf ("<<Example Failed>>: Interrupt example failed\n");
        return;
    }

    CSL_edma3ChannelClose(hChannel);
    CSL_edma3Close(hModule);    
    CSL_intcClose (hIntcEdma);

    return; 
}

/*
 * =============================================================================
 *   @func   tcc1Fxn
 *   @desc
 *     This is the Interrupt service routine  
 *
 *   @arg    None
 *
 *   @eg
 *      tcc1Fxn ();
 *
 *
 * =============================================================================
*/
void tcc1Fxn(void)
{

    intFlag = 1;
}

/*
 * =============================================================================
 *   @func  EdmaEventHook
 *  
 *   @arg
 *      tcc        - Tcc number
 *      fxn        - Pointer to function which points to edma isr
 *
 *   @desc
 *      This is the interrupt handler routine for edma interrupt
 *
 *   @return
 *      NONE
 *
 * =============================================================================
 */
void EdmaEventHook (
    Uint16              tcc, 
    EdmaTccHandler      fxn
)
{
    TccHandlerTable[tcc] = (fxn);
}

/*
 * =============================================================================
 *   @func   eventEdmaHandler
 *
 *   @desc
 *     This is the event handler for edma 
 *
 *   @arg    handle
 *           Pointer to edma handle
 *
 *
 *   @eg
 *      eventEdmaHandler ();
 * =============================================================================
 */
void eventEdmaHandler (
    void        *handle
)
{
    CSL_BitMask32       mask;
    CSL_BitMask32       maskVal;
    CSL_Edma3CmdIntr    regionIntr;
    Uint32              tcc;
    Uint32              intr;
    Uint32              intrh;
    Int                 region;
    CSL_Edma3Handle     hModule = (CSL_Edma3Handle)handle;

    regionIntr.region = CSL_EDMA3_REGION_GLOBAL;
    CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
    
    intr  = regionIntr.intr;
    intrh = regionIntr.intrh;
    mask  = 1;
    tcc   = 0;
    while (intr) {
        maskVal = mask << tcc;
        if (regionIntr.intr & maskVal) {
            InvokeHandle(tcc);
            intr &= ~maskVal;
        }       
        tcc++;
    }       
    mask = 1;
    tcc = 0;
    while (intrh) {
        maskVal = mask << tcc;
        if (intrh & maskVal) {
            InvokeHandle((tcc+32));
            intrh &= ~maskVal;
        }       
        tcc++;
    }
    
    CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR,&regionIntr);       
    CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);         
    
    if ((regionIntr.intr !=0)||(regionIntr.intrh !=0)) {
        region = CSL_EDMA3_REGION_GLOBAL;
        CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTR_EVAL,&region);        
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久噜噜噜久噜久久综合| 色欧美片视频在线观看 | 亚洲视频免费在线观看| 亚洲精品在线观看视频| 亚洲精品一区二区三区在线观看 | 亚洲高清三级视频| 日本亚洲欧美天堂免费| 美女性感视频久久| 国产精品一区二区男女羞羞无遮挡| 国产精品自在欧美一区| 色综合久久久久综合体桃花网| 欧美美女一区二区在线观看| 欧美特级限制片免费在线观看| 欧美日韩极品在线观看一区| 日韩欧美一级特黄在线播放| 久久久久亚洲蜜桃| 一区二区高清视频在线观看| 日本不卡的三区四区五区| 国产很黄免费观看久久| 欧美日韩国产综合一区二区| 日韩免费成人网| 亚洲成人黄色影院| 国产成人综合亚洲网站| 精品视频全国免费看| 国产精品不卡在线| 美日韩一区二区三区| 欧美私人免费视频| 欧美极品另类videosde| 蜜桃精品在线观看| 欧美日韩激情一区二区| 亚洲精品视频免费观看| av影院午夜一区| 亚洲国产成人自拍| 国产精品中文有码| 久久亚洲春色中文字幕久久久| 亚洲国产精品久久久久秋霞影院| 成人中文字幕电影| 欧美日韩免费一区二区三区| 亚洲色图在线视频| 91最新地址在线播放| 国产精品你懂的在线欣赏| 国产福利一区在线观看| 久久综合国产精品| 成人免费看视频| 成人欧美一区二区三区白人| 成人h版在线观看| ●精品国产综合乱码久久久久| 成人精品一区二区三区中文字幕| 国产精品三级视频| 91视频免费观看| 亚洲一区二区在线观看视频 | 亚洲最新视频在线播放| 欧美另类videos死尸| 久久av中文字幕片| 中文字幕一区日韩精品欧美| 色综合 综合色| 奇米在线7777在线精品| 国产精品麻豆视频| 欧美日韩中文一区| 国产综合色产在线精品| 久久综合狠狠综合久久综合88| 国产麻豆精品95视频| 亚洲综合一二三区| 国产日韩欧美一区二区三区综合| 91色九色蝌蚪| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩一区三区四区| 国产在线视视频有精品| 亚洲六月丁香色婷婷综合久久| 欧美成人免费网站| 欧美日韩国产电影| 91色乱码一区二区三区| 丰满放荡岳乱妇91ww| 老司机午夜精品| 日本不卡1234视频| 亚洲韩国一区二区三区| 亚洲欧洲日韩女同| 久久精品欧美一区二区三区麻豆| 3atv一区二区三区| 在线视频一区二区三区| www.日韩精品| 99精品国产视频| av爱爱亚洲一区| 播五月开心婷婷综合| 国产盗摄一区二区| 粉嫩av亚洲一区二区图片| 国产一区二区美女| 成人一区二区视频| 97国产精品videossex| av男人天堂一区| 一区二区三区精品视频在线| 91免费版在线| 亚洲视频小说图片| 一区二区在线观看不卡| 亚洲综合在线第一页| 秋霞av亚洲一区二区三| 免费观看30秒视频久久| 国产真实精品久久二三区| 成人免费福利片| 欧美日韩成人综合| 久久精品网站免费观看| 亚洲色图在线播放| 久草热8精品视频在线观看| 国产成a人亚洲精品| 欧美日韩在线电影| 久久久另类综合| 婷婷中文字幕一区三区| 国产黄色91视频| 7777精品伊人久久久大香线蕉超级流畅 | 欧美二区在线观看| 中文子幕无线码一区tr| 亚洲bdsm女犯bdsm网站| 成人av在线观| 日韩欧美国产wwwww| 亚洲女爱视频在线| 国产自产视频一区二区三区| 欧美日韩综合在线免费观看| 日本一区二区视频在线| 久久99九九99精品| 欧美欧美欧美欧美| 一区在线中文字幕| 国产乱人伦精品一区二区在线观看| 欧美视频三区在线播放| 国产精品超碰97尤物18| 国产**成人网毛片九色| 欧美电影免费观看高清完整版在| 亚洲一区二区在线观看视频| 成人国产精品免费网站| 中文字幕亚洲一区二区va在线| 国产在线看一区| 日韩欧美高清在线| 国内精品视频666| 国产欧美日韩亚州综合| 国产成人免费xxxxxxxx| 国产精品不卡一区| 99久久99久久精品国产片果冻| 亚洲欧美综合网| 色综合久久综合网欧美综合网| 亚洲欧美日本韩国| 欧美日韩不卡一区二区| 美女国产一区二区三区| 国产精品视频九色porn| 色欧美片视频在线观看在线视频| 亚洲高清免费视频| 久久无码av三级| 在线视频中文字幕一区二区| 日韩精品一级二级| 中文字幕精品—区二区四季| 91香蕉视频污在线| 麻豆免费看一区二区三区| 国产精品国产三级国产aⅴ入口 | 亚洲一区二区成人在线观看| 欧美日韩一区高清| 亚洲国产精品一区二区www在线 | 蜜桃视频在线一区| 1区2区3区欧美| 2020日本不卡一区二区视频| 在线中文字幕一区二区| 国产黑丝在线一区二区三区| 视频精品一区二区| 亚洲欧洲制服丝袜| 国产精品电影一区二区三区| 精品福利一区二区三区免费视频| 97aⅴ精品视频一二三区| 国产精一区二区三区| 美女视频黄a大片欧美| 水野朝阳av一区二区三区| 中文字幕在线播放不卡一区| 久久久久久亚洲综合影院红桃 | 日本视频在线一区| 亚洲国产欧美在线| 亚洲一区二区三区四区在线观看 | 中文字幕中文字幕一区| 国产亚洲欧美激情| 久久精品网站免费观看| 日韩免费观看高清完整版 | 香蕉影视欧美成人| 亚洲一区二区三区四区在线| 亚洲黄色免费网站| 亚洲一卡二卡三卡四卡无卡久久| 一区二区三区小说| 亚洲国产精品久久久久秋霞影院| 一区二区成人在线| 日韩精品每日更新| 精品亚洲国产成人av制服丝袜| 日本美女一区二区三区视频| 日本sm残虐另类| 国产精品一品视频| 99久久婷婷国产综合精品电影| av在线一区二区三区| 欧美日韩一区二区三区四区 | 亚洲国产高清在线观看视频| 日韩视频免费直播| 不卡一卡二卡三乱码免费网站| 国产91对白在线观看九色| 成人午夜激情影院| 在线看国产日韩| 久久久久国色av免费看影院| 国产精品国产自产拍高清av| 亚洲h在线观看|