<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 5501|回復: 1
    打印 上一主題 下一主題

    C5402CFG.H/C(結構及結構指針版)及應用演示包

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2009-4-2 21:51:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: 結構 , 指針 , C5402CFG
    /*---------------------------------------------------------------------------
    文   件   名 :  C5402CFG.H(結構及結構指針版)
    創   建   人 :  DSP菜鳥  HotPower@126.com
    創 建 日  期 :  2006.6.09  11:19
    最近修改日期 :  2008.12.16  16:18
    創 建  地 點 : 西安大雁塔村隊部(http://www.hotpower.org/)
    版   本   號 : V4.16
    修 改 理  由 :  修正和增訂內容
        新增結構uVectorEntry以支持廢除匯編啟動代碼(中斷向量表),實現
        程序代碼全部由C/C++語言編寫.
        增加對通用寄存器物理地址的直接訪問,達到匯編級的代碼速度
        新版本(SREGs結構型,優化)與老版本(SREG結構指針型,方便)高度兼容
    備        注 : 由此文件出現的問題,DSP菜鳥不負任何責任
                    菜農將不斷更新和完善本頭文件。
                    必須在系統中同時加入C5402CFG.C
    升 級 方  法 :  在父親節版的基礎上全面升級為統一結構指針
        只需在舊版C5402DEF.H或C5402CFG.H的結構成員后加.Regs即可
    應 用 舉  例:
        SREG->ST0 &= ~(1 << ST0_C);
        改為:
        SREG->ST0.Regs &= ~(1 << ST0_C);
        或:
        SREG->ST0.Bits.C = 0;
         
                    父親節版新舊版近似兼容使其更強大:
        SREG->ST1.Bits.XF = true;
        SREG->ST1.Bits.CPL = 1;
        SREG->ST1.Regs = (1 << ST1_XF) | (1 << ST1_CPL);
        TIMER0->TCR.Bits.TSS = 1;//關閉定時器0
        TIMER0->TIM = 62500 - 1;//設置定時計數器
        或:
        SREG->TIMER0.TCR.Bits.TSS = 1;//關閉定時器0
        SREG->TIMER0.TIM = 62500 - 1;//設置定時計數器
                    結構的訪問使代碼更簡潔更優化:
        SREGs.ST0.Bits.C = true;
        SREGs.ST1.Bits.XF = true;
        SREGs.ST1.Bits.CPL = 1;
        SREGs.ST1.Regs = (1 << ST1_XF) | (1 << ST1_CPL);
        SREGs.TIMER0.TCR.Bits.TSS = 1;//關閉定時器0
        SREGs.TIMER0.TIM = 62500 - 1;//設置定時計數器
        對McBSP實現結構型位域匯編級代碼訪問:
        指針型:McBSP1->SPSA = PCR;
                McBSP1->SPSD.PCR_Bits.FSXP= 1;
          McBSP0->DXR1 = 0x1234;
            或:SREG->McBSPADDR1.SPSA = PCR;
                SREG->McBSPADDR1.SPSD.PCR_Bits.FSXP= 1;
          SREG->McBSPDATA0.DXR1 = 0x1234;
                    結構型:SREGs.McBSPADDR1.SPSA = PCR;
                            SREGs.McBSPADDR1.SPSD.PCR_Bits.FSXP = 1;
          SREGs.McBSPDATA0.DXR1 = 0x1234;
                   
    注 意 事  項 :  用SREGs結構要比SREG結構指針代碼優化,可達到匯編級.
                    但查看變量時由于CCS的問題, SREGs結構查看不到成員,
                    可在Watch窗口用SREG結構指針查看SREGs的結構成員.
        用McBSP0/McBSP1結構指針查看McBSP更方便.
    聲        明 : 雁塔菜農擁有對本文件的最終解釋和灌溉權。               
    ---------------------------------------------------------------------------*/


    /*---------------------------------------------------------------------------
    文   件   名 :  C5402CFG.C(結構及結構指針版)
    創   建   人 :  DSP菜鳥  HotPower@126.com
    創 建 日  期 :  2006.6.09  11:19
    最近修改日期 :  2008.12.16  16:18
    創 建  地 點 : 西安大雁塔村隊部(http://www.hotpower.org/)
    版   本   號 : V4.16
    修 改 理  由 :  修正和增訂內容
        新增結構uVectorEntry以支持廢除匯編啟動代碼(中斷向量表),實現
        程序代碼全部由C/C++語言編寫.
        增加對寄存器的直接物理地址的訪問,最優化的速度
        新版本(SREGs結構型,優化)與老版本(SREG結構指針型,方便)高度兼

    備        注 : 由此文件出現的問題,DSP菜鳥不負任何責任
                    菜農將不斷更新和完善本頭文件。
                    必須在系統中同時加入C5402CFG.C
    應        用 : 廢除匯編的啟動代碼(中斷向量表)
    #pragma DATA_SECTION("vectors")
    const uVectorEntry g_pfnVectors[] = {
    ISR_Reset(),   //reset      0x0080 #0//軟硬件復位nISR_REST
    ISR_Default(), //nmi        0x0084 #1//非屏蔽中斷nISR_NMI
    ISR_Default(), //sint17     0x0088 #2//軟件中斷17   
    ISR_Default(), //sint18     0x008c #3//軟件中斷18
    ISR_Default(), //sint19     0x0090 #4//軟件中斷19
    ISR_Default(), //sint20     0x0094 #5//軟件中斷20
    ISR_Default(), //sint21     0x0098 #6//軟件中斷21
    ISR_Default(), //sint22     0x009c #7//軟件中斷22
    ISR_Default(), //sint23     0x00a0 #8//軟件中斷23
    ISR_Default(), //sint24     0x00a4 #9//軟件中斷24
    ISR_Default(), //sint25     0x00a8 #10//軟件中斷25
    ISR_Default(), //sint26     0x00ac #11//軟件中斷26
    ISR_Default(), //sint27     0x00b0 #12//軟件中斷27
    ISR_Default(), //sint28     0x00b4 #13//軟件中斷28
    ISR_Default(), //sint29     0x00b8 #14//軟件中斷29
    ISR_Default(), //sint30     0x00bc #15//軟件中斷30
    ISR(Eint0Isr), //int0       0x00c0 #16//外部中斷0
    ISR(Eint1Isr), //int1       0x00c4 #17//外部中斷1
    ISR(Eint2Isr), //int2       0x00c8 #18//外部中斷2
    ISR(Timer0Isr),//tint       0x00cc #19//定時器中斷0
    ISR(McBSPIsr), //rint0      0x00d0 #20//McBSP0接收中斷
    ISR_Default(), //xint0      0x00d4 #21//McBSP0發送中斷
    ISR_Default(), //rint1      0x00d8 #22//McBSP1接收中斷
    ISR(Timer1Isr),//xint1      0x00dc #23//定時器中斷1
    ISR(Eint3Isr), //int3       0x00e0 #24//外部中斷3
    ISR_Default(), //hpint      0x00e4 #25//HPI中斷
    ISR_Default(), //           0x00e8 #26//軟件中斷10
    ISR_Default(), //           0x00ec #27//軟件中斷11
    ISR_Default(), //           0x00f0 #28//軟件中斷12
    ISR_Default(), //           0x00f4 #29//軟件中斷13
    ISR_Default(), //           0x00f8 #30//保留0
    ISR_Default(), //           0x00fc #31//保留1
    };
    extern "C" interrupt void DefaultIsr(void)
    {
    }

    注 意 事  項 :  用SREGs結構要比SREG結構指針代碼優化,但查看變量時由于CCS的問題
                    SREGs結構查看不到成員,但可用SREG結構指針查看.
    聲        明 : 雁塔菜農擁有對本文件的最終解釋和灌溉權。               
    ---------------------------------------------------------------------------*/


    應用演示包下載: (包內自帶C5402cfg.h/C5402cfg.c/interrupt.h/cpp能文件)
    本版本經過半年多的應用已非常穩定.它支持C/C++工程多文件系統,不象
    C5402def.h只支持工程單文件系統
    最大改動:
    1.廢除匯編的啟動代碼(中斷向量表)
    新增結構uVectorEntry以支持廢除匯編啟動代碼(中斷向量表),實現
        程序代碼全部由C/C++語言編寫.
    2.用SREGs結構要比SREG結構指針代碼優化,可達到匯編級訪問.
    3.增設對McBSP的虛擬地址的位域訪問.
    4.升級后用舊版本C5402DEF.H編寫的軟件只需稍加更改即可.
    #pragma DATA_SECTION(SREGs, ".registers")
    //結構型,建議使用,可達到匯編級的訪問速度和代碼優化
    TI_SREG SREGs;//定義全局結構變量SREGs(5402通用寄存器)
    //結構指針型以后可能將被淘汰,目前只用于仿真時監視SREGs
    const TI_PSREG SREG = TI_BASE_SREG;//定義全局結構指針變量SREG
    const TI_PMcBSP0 McBSP0 = TI_BASE_McBSP0;//定義全局結構指針變量McBSP0
    const TI_PMcBSP1 McBSP1 = TI_BASE_McBSP1;//定義全局結構指針變量McBSP1
    const TI_PDMA DMA = TI_BASE_DMA;//定義全局結構指針變量DMA
    const TI_PTIMER TIMER0 = TI_BASE_TIMER0;//定義全局結構指針變量TIMER0
    const TI_PTIMER TIMER1 = TI_BASE_TIMER1;//定義全局結構指針變量TIMER1
    再次聲明 : 雁塔菜農擁有對本文件的最終解釋和灌溉權。
                              轉載和提供下載請注明出處. 不久將會發布HotBios.
    多謝多年來大家對"C5402def.h"的厚愛,看到網上有眾多網友應用很高興.
    菜農很倒塌地說---本版本TI也很難超越~~~
    HotPower@126.com      2008.12.16 與大雁塔菜地
    沙發
    發表于 2009-4-2 21:54:24 | 只看該作者
    沙發
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷