rqdzss 发表于 2016-12-20 10:00

为啥DSP2812捕获程序进不了中断啊,程序如下

#include "DSP28_Device.h"
Uint16 temp;

void CAP4init()
{
   EvbRegs.GPTCONB.all=0x0000;
   EvbRegs.CAP4FBOT=0x0000;
   EvbRegs.CAP4FIFO=0x0000;
   EvbRegs.CAPFIFOB.all=0x0000;
       EvbRegs.T3CON.bit.TENABLE = 0;//暂时禁止T3计数
   EvbRegs.T3CON.bit.TPS = 0; // 对外部信号不分频
   EvbRegs.T3CON.bit.TMODE = 2; // 连续模式
       EvbRegs.T3CON.bit.TCLKS10=0;        //选择内部时钟
   EvbRegs.T3PR=0xffff;
   EvbRegs.T3CNT=0x0000;
   //EvaRegs.CAPCON.all=0x0210;//捕获单元2为检测上升沿,选择Timer1为时钟
   //EvaRegs.T1CON.all = 0xf74c;   //Timer1 为连续增,预分频系数为128


       EvbRegs.CAPCONB.bit.CAPRES=0;      //捕获单元复位
       EvbRegs.CAPCONB.bit.CAPQEPN=1;   //使能捕获单元4和5
       EvbRegs.CAPCONB.bit.CAP45TSEL=1;   //选择通用定时器3
       EvbRegs.CAPCONB.bit.CAP4EDGE=1;           //CAP4检测上升沿
             
   EvbRegs.EVBIMRC.bit.CAP4INT=1;   //使能CAP4中断
       EvbRegs.EVBIFRC.bit.CAP4INT=1;   //清除CAP4中断标志位

}   
void IOinit()
{
          EALLOW;               
          GpioMuxRegs.GPBMUX.bit.CAP4Q1_GPIOB8 =1;//使能 CAP4 引脚
   GpioMuxRegs.GPAMUX.bit.PWM5_GPIOA4=0;   //设置PWM5引脚
       GpioMuxRegs.GPAMUX.bit.PWM6_GPIOA5=0;   //设置PWM6引脚

          EDIS;
}



main(void)
{
    InitSysCtrl();            //系统初始化
           DINT;                   //禁止和清除所有CPU中断
        IER = 0x0000;
        IFR = 0x0000;
    IOinit();
        CAP4init();
        InitPieCtrl();
        InitPieVectTable();
    PieVectTable.CAPINT4 =&CAPINT4_ISR;
        PieCtrlRegs.PIEIER5.bit.INTx5=1;//使能PIE中断,CAP4中断位于INT5.5
               
        IER|=M_INT5;    //开CPU中断
                  EINT;                         //开全局中断
                ERTM;                         //开实时中断
                        EvbRegs.T3CON.bit.TENABLE=1;      //使能定时器T3计数操

    while (1)
    {

        }
}

JY-DX-JY 发表于 2016-12-20 10:05

你的中断服务程序呢?

rqdzss 发表于 2016-12-20 13:16

JY-DX-JY 发表于 2016-12-20 10:05
你的中断服务程序呢?

interrupt void CAPINT4_ISR(void)   // EV-B
{
    GpioDataRegs.GPATOGGLE.bit.GPIOA4=1;
    GpioDataRegs.GPATOGGLE.bit.GPIOA5=1;

    PieCtrlRegs.PIEACK.bit.ACK5=1;   //响应同组中断
        EvbRegs.EVBIFRC.bit.CAP4INT=1;      //清除中断标志位
        EINT;                              //开全局中断
   
}

rqdzss 发表于 2016-12-20 13:17

rqdzss 发表于 2016-12-20 13:16
interrupt void CAPINT4_ISR(void)   // EV-B
{
    GpioDataRegs.GPATOGGLE.bit.GPIOA4=1;


就是进不了中断,不知道问题在哪

rqdzss 发表于 2016-12-20 15:55

JY-DX-JY 发表于 2016-12-20 10:05
你的中断服务程序呢?

你好,在吗

JY-DX-JY 发表于 2016-12-20 16:16

rqdzss 发表于 2016-12-20 15:55
你好,在吗

我好长时间不用DSP了,你的捕获的管脚给相应脉冲了吗?

rqdzss 发表于 2016-12-23 15:27

JY-DX-JY 发表于 2016-12-20 16:16
我好长时间不用DSP了,你的捕获的管脚给相应脉冲了吗?

给了相应的方波了

JY-DX-JY 发表于 2016-12-24 15:09

官网应该有历程吧,对照手册看看。我都忘了
页: [1]
查看完整版本: 为啥DSP2812捕获程序进不了中断啊,程序如下