Thread 中讨论的其他器件:EK-TM4C1294XL
您好、专家先生
我将通用定时器1配置为在输入边沿计时模式下工作、以捕获分配给引脚 PD2的 T1CPP0上的上升沿、但当低电平脉冲应用于 PD2引脚时、不会触发相关中断。
下面是 Timer1初始化和 GPIO 引脚 PD2配置的代码。
…
#define AFSEL_T1CCP0 4.
#define PMC2_T1CCP0 0x30
#define DEN_T1CCP0 4.
#define ODR_T1CCP0 4.
…
//初始化 Timer1_A 以输入边沿计时模式
HWREG (GPIO_PORTD_BASE + GPIO_AFSEL)|= AFSEL_T1CCP0;
HWREG (GPIO_PORTD_BASE + GPIO_O_PCTL)|= PMC2_T1CCP0; //将 PD0设置为 T0CCP0功能,使用 PWM 功能作为 DQ 输出
HWREG (GPIO_PORTD_BASE + GPIO_DEN)|= DEN_T1CCP0;
HWREG (SYSCTL_RCGCTIMER)|= SYSCTL_RCGCTIME_R1;
HWREG (Timer1_base + TIMER_O_CTL)&=~TIMER_CTL_TAEN;
HWREG (Timer1_base + TIMER_O_CFG)= TIMER_CFG_16_BIT;
HWREG (Timer1_base + TIMER_O_TAMR)= TIMER_TAMR_TACMR | TIMER_TAMR_TAMR_CAP | TIMER_TAMR_TACDIR; //计时器从0开始递增计数
HWREG (Timer1_base + TIMER_O_CTL)|= TIMER_CTL_TAEVENT_Both;
HWREG (Timer1_base + TIMER_O_TAPR)= 0xFF;
HWREG (Timer1_base + TIMER_O_TAILR)= 0xFFFF;
bBitPatternRecognized = false;
ui32BitLength = 0;
HWREG (Timer1_base + TIMER_O_IMR)= TIMER_IMR_CAEIM;
TimerIntRegister (Timer1_base、timer_A、Timer1IntHandler);
…
在我设置 TAEN 位后、下拉 PD2上的电压、然后将 PD2上的电压释放为高电平。
HWREG (Timer1_base + TIMER_O_CTL)|= TIMER_CTL_TAEN;
中断未按预期触发。 您能否帮助检查我是否错过了引脚配置?
bBitPatternRecognized = false;
ui32BitLength = 0;
HWREG (Timer1_base + TIMER_O_IMR)= TIMER_IMR_CAEIM;
TimerIntRegister (Timer1_base、timer_A、Timer1IntHandler);
EV2500_TM4C_003