久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3471|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

DSP2812捕獲發(fā)脈沖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:135859 發(fā)表于 2016-8-3 11:20 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式




//注:脈沖輸出無論設(shè)置為高有效或是低有效,只要不啟動定時(shí)器輸出的均為高電平。

//此函數(shù)采用捕獲中斷捕獲到同步信號即發(fā)脈沖
//發(fā)脈沖時(shí)遵循以下公式:(T1CMPR比較值)+脈寬=T1PR周期,而計(jì)數(shù)初值T1CNT=觸發(fā)腳對應(yīng)值,就可以確定出T1CMPR,T1CNT,T1PR三個(gè)值
//注使用事件管理器的中斷也要使能這層中斷與其它中斷不太一樣

//TXCON簡介
   //獨(dú)立的GP定時(shí)控制寄存器
                           //用來決定處于4種計(jì)數(shù)模式中的哪一種,GP定時(shí)器使用內(nèi)部還是外部時(shí)鐘,使用8種預(yù)定標(biāo)因子中的哪一種
                           //定時(shí)比較寄存器重載后進(jìn)入哪種狀態(tài),定時(shí)器被使能還是禁止,周期寄存器采用定時(shí)器1,2還是自身的周期寄存器
                           //周期寄存器采用定時(shí)器3,4還是自身的周期寄存器

#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
#include "math.h"

//////捕獲中斷4
interrupt void evb_cap4_isr(void);
//////捕獲中斷5
interrupt void evb_cap5_isr(void);   
//////捕獲中斷6
interrupt void evb_cap6_isr(void);
//////外部區(qū)設(shè)置
void InitXintf(void);
/////系統(tǒng)初始化包括系統(tǒng)時(shí)鐘
void InitSysCtrl(void);
/////IO口初始化
void InitGpio() ;
/////中斷
void InitPieCtrl(void);
/////中斷向量表
void InitPieVectTable(void);
/////中斷初始化
void Initinterrupt(void);
int   zhuangtai[520]=0;           

//--------------主函數(shù)-----------------------------
void main()
{
Uint16 i=0;

InitSysCtrl();//系統(tǒng)初始化



InitXintf();//初始化外部RAM XINTF
       

       
InitGpio();//初始化GPIO口

/////////初始化EVA
////TXCON定時(shí)器控制寄存器
////15FREE,14SOFT仿真控制位(00仿真掛起時(shí)立即停止,01仿真掛起,完成當(dāng)前定時(shí)器周期后停止,10仿真掛起不影響操作,11仿真掛起不影響操作,
////13Reserved    讀操作返回0,寫操作沒有影響
////12,11TMODE 00停止/保持模式,01連續(xù)增/減計(jì)數(shù)模式,10連續(xù)遞增計(jì)數(shù)模式,11方向增/減計(jì)數(shù)模式

   EvaRegs.T1CON.all=0x9046;
   EvaRegs.T2CON.all=0x9046;             //disable time1 and timer2

/////擴(kuò)展控制寄存器
    EvaRegs.EXTCONA.bit.INDCOE=1;
    EvaRegs.GPTCONA.all=0x007f;

    EvaRegs.T1PR=0x6F70;   //周期10ms  100hz
    EvaRegs.T1CMPR=0x644A;  //比較值   1ms觸發(fā)

    EvaRegs.T2PR=0x6F70;   
    EvaRegs.T2CMPR=0x644a;  
////EVB里的     
    EvbRegs.EXTCONB.bit.INDCOE=1;
    EvbRegs.GPTCONB.all=0x0052;

    EvbRegs.T3PR=0x6F70;   
    EvbRegs.T3CMPR=0x644a;  

  //////以上是與定時(shí)器相關(guān)的


///////捕獲
    EvbRegs.CAPCONB.all=0;
    //EvbRegs.CAPFIFOB.bit.CAP4FIFO=0;
    //EvbRegs.CAPFIFOB.bit.CAP5FIFO=0;
   // EvbRegs.CAPFIFOB.bit.CAP6FIFO=0;
//////捕獲中斷
    EvbRegs.EVBIFRC.bit.CAP4INT=1;
    EvbRegs.EVBIFRC.bit.CAP5INT=1;
    EvbRegs.EVBIFRC.bit.CAP6INT=1;

        EvbRegs.EVBIMRC.all=0x0007;//中斷屏蔽寄存器

    EvbRegs.T4PR=12500;
        EvbRegs.T4CNT=0x0001;

   EvbRegs.EVBIFRB.bit.T4PINT=1;
   EvbRegs.EVBIMRB.bit.T4PINT=1;
   EvbRegs.T4CON.all=0x9744;
   EvbRegs.CAPCONB.all=0x3054;



EvbRegs.T3CNT=300;
EvaRegs.T2CNT=300;
EvaRegs.T1CNT=300;
EvbRegs.T3CON.all=0x9046;
EvaRegs.T2CON.all=0x9046;
EvaRegs.T1CON.all=0x9046;
//EvaRegs.T1CON.all=0x9046;
/*       
EALLOW;//發(fā)生中斷時(shí)調(diào)用中斷函數(shù)sciaRxFifoIsr,scibRxFifoIsr
SysCtrlRegs.WDCR= 0x002F;
    EDIS;
*/       
for(i=0;i<520;i++)
zhuangtai[i]=0;

       
Initinterrupt();//初始化中斷

zhuangtai[0]=GpioDataRegs.GPADAT.all&0XC0;
               
while(1)
{

}                  


}   











interrupt void evb_cap6_isr()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
{

int  z=0;
  DINT;





EvbRegs.T3CON.all=0;

EvbRegs.T3CNT=200;


EvbRegs.T3CON.all=0x9046;


re:        EvbRegs.EVBIFRC.bit.CAP6INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP5;
EINT;
}   

interrupt void evb_cap5_isr()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
{

int  n=0;
  DINT;

EvaRegs.T2CON.all=0;

EvaRegs.T2CNT=200;



EvaRegs.T2CON.all=0x9046;


re:        EvbRegs.EVBIFRC.bit.CAP5INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP5;
EINT;
}  


interrupt void evb_cap4_isr()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
{

int  m=0;
  DINT;


EvaRegs.T1CON.all=0;


EvaRegs.T1CNT=200;

  EvaRegs.T1CON.all=0x9046;

re:        EvbRegs.EVBIFRC.bit.CAP4INT=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP5;
EINT;
}






void Initinterrupt(void)
{

DINT;//屏蔽全局中斷(INTM=1),置1,關(guān)中斷

    InitPieCtrl();//初始化PIE控制寄存器

    IER=0x0000;//禁止所有的CPU級中斷
    IFR=0x0000;//清除CPU級中斷標(biāo)志位

    InitPieVectTable();//初始化PIE中斷向量表

//InitCpuTimers();

    EALLOW;//發(fā)生中斷時(shí)調(diào)用中斷函數(shù)sciaRxFifoIsr,scibRxFifoIsr

    EDIS;
EALLOW;
PieVectTable.CAPINT6=&evb_cap6_isr;
  PieVectTable.CAPINT4=&evb_cap4_isr;
PieVectTable.CAPINT5=&evb_cap5_isr;


EDIS;



PieCtrlRegs.PIEIER5.bit.INTx5=1;//開啟第5組中斷(捕獲的三個(gè)中斷在此組里)

      IER|=M_INT5;

       
    EINT;//使能全局中斷(INTM=0),置0,開中斷
    ERTM; //開全局實(shí)時(shí)中斷,使能中斷調(diào)試寄存器DBGM


}

void InitGpio()  //io點(diǎn)第二功?輸入  輸出設(shè)定
{
EALLOW;
//使薌拇嫫?
GpioMuxRegs.GPAMUX.all = 0x00FF; // 將EVA PWM 1-6 引腳配置
GpioMuxRegs.GPBMUX.all = 0x00FF; // 將EVB PWM 7-12 引腳配置




       
       

EDIS;
}

/////////////////











void InitSysCtrl(void)
{
  Uint16 i;
   EALLOW;

// 對于TMX產(chǎn)品,為了能夠使得片內(nèi)RAM模塊M0/M1/L0/L1LH0能夠獲得最好的性能,控萍拇嫫韉奈?
// 必須使能,這些位在設(shè)備硬件仿真寄存器內(nèi)。TMX是TI的試驗(yàn)型產(chǎn)品


// 禁止看門狗模塊
   SysCtrlRegs.WDCR= 0x0068;


// 初始化PLL模塊
   SysCtrlRegs.PLLCR.all = 0x08; //如果外部晶振為20M,則SYSCLKOUT=20*1/2=10MHz

// 延時(shí),使得PLL模塊能夠完成初始化操作
   for(i= 0; i< 5000; i++){}

// 高速時(shí)鐘預(yù)定標(biāo)器和低速時(shí)鐘預(yù)定標(biāo)器,產(chǎn)生高速外設(shè)時(shí)鐘HSPCLK和低速外設(shè)時(shí)鐘LSPCLK
   //SysCtrlRegs.LOSPCP.all = 0x00000;        // LSPCLK=10/1=10MHz
SysCtrlRegs.HISPCP.all=0x07;
SysCtrlRegs.LOSPCP.all=0x07;
// 對工程中使用到耐設(shè)進(jìn)行時(shí)鐘使能
   SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
   SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
   SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;  // SCIA模塊時(shí)鐘使能
   SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;  // SCIA模塊時(shí)鐘使能
                               
   EDIS;
       


                               

       
}

//---------------------------------------------------------------------------
// KickDog:
//---------------------------------------------------------------------------
// This function resets the watchdog timer.
// Enable this function for using KickDog in the application
void InitXintf(void)
{

       
    // Example of chaning the timing of XINTF Zones.  
    // Note acutal values should be based on the hardware
    // attached to the zone - timings presented here are
    // for example purposes.

    // All Zones:
    // Timing for all zones based on XTIMCLK = SYSCLKOUT/2
    XintfRegs.XINTCNF2.bit.XTIMCLK = 0;  // XTIMCLK = SYSCLKOUT/2
    XintfRegs.XINTCNF2.bit.CLKOFF = 1;   // DISABLE XCLKOUT
        XintfRegs.XINTCNF2.bit.WRBUFF = 0;   // NO WRITE BUFFER
        XintfRegs.XINTCNF2.bit.CLKMODE = 0;  // XCLKOUT = XTIMCLK/4

        // Zone 0
        // Ignore XREADY for Zone 1 accesses
        // Change read access lead/active/trail timing
        XintfRegs.XTIMING0.bit.USEREADY = 0;
        XintfRegs.XTIMING0.bit.XSIZE = 3;                // ALWAYS WRITE TO 11BIT
        XintfRegs.XTIMING0.bit.XWRACTIVE = 3;
        XintfRegs.XTIMING0.bit.XWRTRAIL=7;
        XintfRegs.XTIMING0.bit.XWRLEAD=3;
        XintfRegs.XTIMING0.bit.XRDLEAD = 3;
        XintfRegs.XTIMING0.bit.XRDACTIVE =7;
        XintfRegs.XTIMING0.bit.XRDTRAIL = 3;




       
    XintfRegs.XBANK.bit.BCYC = 7;        
    XintfRegs.XBANK.bit.BANK = 2;
       

        // Zone 2
        // Ignore XREADY for Zone 2 accesses
        // Change read access lead/active/trail timing
        XintfRegs.XTIMING2.bit.USEREADY = 0;
        XintfRegs.XTIMING2.bit.XSIZE = 3;
        XintfRegs.XTIMING2.bit.XWRACTIVE = 3;
        XintfRegs.XTIMING2.bit.XWRTRAIL=7;
        XintfRegs.XTIMING2.bit.XWRLEAD=3;
        XintfRegs.XTIMING2.bit.XRDLEAD = 3;
        XintfRegs.XTIMING2.bit.XRDACTIVE =7;
        XintfRegs.XTIMING2.bit.XRDTRAIL = 3;
        //no Double lead/active/trial timing for Zone 2
        XintfRegs.XTIMING2.bit.X2TIMING=1;

       
XintfRegs.XINTCNF2.bit.CLKOFF = 0;//

       
}

//************************************
//         初始化PIE控制寄存器
//************************************
void InitPieCtrl(void)
{
        // 禁止PIE模塊
     PieCtrlRegs.PIECRTL.bit.ENPIE = 0;

        // 禁止PIE所有中斷
     PieCtrlRegs.PIEIER1.all = 0;
     PieCtrlRegs.PIEIER2.all = 0;
     PieCtrlRegs.PIEIER3.all = 0;       
     PieCtrlRegs.PIEIER4.all = 0;
     PieCtrlRegs.PIEIER5.all = 0;
     PieCtrlRegs.PIEIER6.all = 0;
     PieCtrlRegs.PIEIER7.all = 0;
     PieCtrlRegs.PIEIER8.all = 0;
     PieCtrlRegs.PIEIER9.all = 0;
     PieCtrlRegs.PIEIER10.all = 0;
     PieCtrlRegs.PIEIER11.all = 0;
     PieCtrlRegs.PIEIER12.all = 0;

        // 清除所蠵IEIFR的中斷標(biāo)志位
     PieCtrlRegs.PIEIFR1.all = 0;
     PieCtrlRegs.PIEIFR2.all = 0;
     PieCtrlRegs.PIEIFR3.all = 0;       
     PieCtrlRegs.PIEIFR4.all = 0;
     PieCtrlRegs.PIEIFR5.all = 0;
     PieCtrlRegs.PIEIFR6.all = 0;
     PieCtrlRegs.PIEIFR7.all = 0;
     PieCtrlRegs.PIEIFR8.all = 0;
     PieCtrlRegs.PIEIFR9.all = 0;  
     PieCtrlRegs.PIEIFR10.all = 0;
     PieCtrlRegs.PIEIFR11.all = 0;
     PieCtrlRegs.PIEIFR12.all = 0;

        // 使能PIE模塊
     PieCtrlRegs.PIECRTL.bit.ENPIE = 1;
     PieCtrlRegs.PIEACK.all = 0xFFFF;
}       

//***********************************
//        初始化PIE中斷向量表
//***********************************

void InitPieVectTable(void)
{
        Uint16        i;
        Uint32 *Source = (void *) &PieVectTable;
        Uint32 *Dest = (void *) &PieVectTable;
               
        EALLOW;       
        for(i=0; i < 128; i++)
                *Dest++ = *Source++;       
        EDIS;

        // 使能PIE向量表
PieCtrlRegs.PIECRTL.bit.ENPIE = 1;       
                       
}


       
       













評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产成人国产三级 | 色综合激情 | 老牛嫩草一区二区三区av | 国外成人在线视频网站 | 理论片87福利理论电影 | 99热.com| 香蕉视频久久久 | a久久久久久 | 亚洲国产精品自拍 | 久久久免费| 日本不卡免费新一二三区 | 日韩一区二区三区精品 | 国产一区二区三区四区在线观看 | 中文字幕 国产精品 | 成人一区精品 | 久久蜜桃av一区二区天堂 | 欧美精品一区二区三区在线 | 久久99精品国产自在现线小黄鸭 | 日操夜操 | 久热国产精品视频 | 国产日韩免费观看 | 国产福利二区 | 蜜桃在线播放 | 91大神在线资源观看无广告 | 日本色婷婷 | 欧美激情国产日韩精品一区18 | 国产高清免费 | 韩三级在线观看 | 国产丝袜一区二区三区免费视频 | 一区二区三区在线免费 | 91网站在线看 | 亚洲色欧美另类 | 日本亚洲欧美 | 羞羞网站免费观看 | 欧美电影在线观看网站 | 欧美精品1区2区3区 免费黄篇 | h视频在线免费看 | 久久亚洲一区二区三区四区 | 日韩成人免费在线视频 | 国产91丝袜在线熟 | 亚洲国产精品福利 |