LM3S9B92定时器的16位输入下降沿捕获模式怎么配置?



void

Timer0IntCapture(void)

{

//

// 使能Timer0时钟模块

//

SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);

//

// 使能CCP0所在的GPIO端口PB0

//

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

GPIOPinConfigure(GPIO_PB0_CCP0);

//

// 配置CCP0PB0)管脚为脉冲输入

//

GPIOPinTypeTimer(GPIO_PORTB_BASE,GPIO_PIN_0);

//--------------------底层寄存器操作(YJ测试)----------------------------------------------

   // 禁用定时器Timer0A

  HWREG(TIMER0_BASE + TIMER_O_CTL) &= (~0x1);

// 16位定时器配置

  HWREG(TIMER0_BASE + TIMER_O_CFG) = 0x4;

// 配置为边沿计时模式

  HWREG(TIMER0_BASE + TIMER_O_TAMR) |= (0x1 << 2);

// TimerA配置为捕获模式

  HWREG(TIMER0_BASE + TIMER_O_TAMR) |= 0x3;

// 定义Timer0为下降沿捕获方式

  HWREG(TIMER0_BASE + TIMER_O_CTL) &= ~(0x3 << 2);

  HWREG(TIMER0_BASE + TIMER_O_CTL) |= (0x1 << 2);

// TimerA间隔加载寄存器装入初值

  HWREG(TIMER0_BASE + TIMER_O_TAILR) = 0xFFFF;

// 开启Timer0A捕获下降沿中断

  HWREG(TIMER0_BASE + TIMER_O_IMR) |= (0x1 << 2);

//开启定时器Timer0A开始计时和捕获逻辑

  HWREG(TIMER0_BASE + TIMER_O_CTL) |= 0x1;

//--------------------------------------------------------------------------------

    //

// 使能Timer0A中断

//

IntEnable(INT_TIMER0A);

//

// 使能处理器中断

//

IntMasterEnable();

 

哪位大虾能看看我这段代码配置出现什么问题了,代码完全按照datasheet上的配置步骤进行配置,但是实际情况是GTPMTAPR寄存器中的值始终在变(此时没有发生捕获中断,也没有输入下降沿)。

  •    //Timer1 configure for ccp function
        TimerConfigure(TIMER1_BASE, TIMER_CFG_16_BIT_PAIR |
                                    TIMER_CFG_B_CAP_COUNT);

        TimerControlEvent(TIMER1_BASE,TIMER_B,TIMER_EVENT_NEG_EDGE);

     TimerControlStall(TIMER1_BASE,TIMER_B,true);

        TimerLoadSet(TIMER1_BASE, TIMER_B, 6003);    
     
        TimerMatchSet(TIMER1_BASE, TIMER_B, 3);             

        TimerIntEnable(TIMER1_BASE, TIMER_CAPB_MATCH);  
     
        IntEnable(INT_TIMER1B);                                 

        IntMasterEnable();                                      


        TimerEnable(TIMER1_BASE, TIMER_B);