void
Timer0IntCapture(void)
{
//
// 使能Timer0时钟模块
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
//
// 使能CCP0所在的GPIO端口PB0
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB0_CCP0);
//
// 配置CCP0(PB0)管脚为脉冲输入
//
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寄存器中的值始终在变(此时没有发生捕获中断,也没有输入下降沿)。