您好,
我希望在输入边缘应用程序中将计时器GPT2配置为CC2538上的边缘时间模式的32位计时器A。 我的结果是,如果我不使用定期模式,而是使用“捕获模式”,我似乎不再得到超时中断。 我已从GPIO配置了一个输入边缘,我知道当在16位模式下设置时,它在另一个计时器中可以正常工作。 我不需要16位捕获,我需要32位捕获。 是否有此功能?
IOCPinConfigPeriphInput (GPIO _B_BASE,GPIO PIN_3,IOC_GPT2OCP1); << 输入引脚配置
GPIOPinTypeTimer(GPIO_B_B_BASE,GPIO_PIN_3);<< 引脚用于监控负边缘。
GPTIMER2_CFG = 0; <32 位操作。
GPTIMER2_Tamr ||(0
| GPTIMR_Tamr_Tamr (TnMR_capture) << Capture而不是Periodic???
| GPTIMER_TAMR_TACMR_MASK //定时器A边缘时间模式
| GPTIMER_TAMR_TCDIR_MASK //计时器A计时
);
GPTIMER2_CTL ||(0
| GPTIMER_CTL_TAEVENT (负极边缘)
);
TimerCountSet (GPTIMER2_BASE,GPTIMER_A,0);
TMP = GPT2_From_USEC (PLL_MOD_USec);
TimerLoadSet (GPTIMER2_BASE,GPTIMER_A,tmp);
TimerIntEnable(GPTIMER2_BASE,GPTIMER_TIMA_TIMEOUT);
TimerIntEnable (GPTIMER2_BASE,GPTIMER_CAPA_EVENT);
TimerIntRegister (GPTIMER2_BASE,GPTIMER_A,gpt2_interrupt_vector);
TimerIntClear (GPTIMER2_BASE,GPTIMER_TIMA_TIMEOUT|GPTIMER_CAPA_MATCH |GPTIMER_CAPA_MATCH);
TimerEnable (GPTIMER2_BASE,GPTIMER_A);
从用户指南中...步骤2是什么? 配置模式4?? 我想要32位的边缘时间,而不是16位。
输入边缘计时模式
按以下顺序将计时器配置为输入边缘计时模式:
1.在进行任何更改之前,确保已禁用计时器(清除Taen位)。
2.写入值为0000.0004 的GPTM配置(GPTIMER_CFG)寄存器。 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 为什么 需要拆分计时器?? 我想要32位边缘时间。
3.在GPTM计时器模式(GPTIMER_TnMR)寄存器中,将TnCMR字段写入0x1和TnMR
字段为0x3。
4.通过写入GPTM的TnEVENT字段来配置计时器捕获的事件类型
控制(GPTIMER_CTL)寄存器。
5.如果要使用预分频器,请将预分频值写入GPTM定时器n预分频寄存器
(GPTIMER_TnPR)。
6.将计时器开始值加载到GPTM Timer n Interval Load (GPTIMER_TnILR)寄存器中。
7.如果需要中断,请在GPTM中断掩码(GPTIMER_IMR)寄存器中设置CnMIM位。
8.在GPTIMER_CTL寄存器中设置TnEN位以启用计时器和开始计数。
9.轮询GPTMRIS寄存器中的CnMRIS位或等待生成中断(如果启用)。 英寸
在这两种情况下,状态标志都通过将1写入GPTM中断的CnMCINT位来清除
清除(GPTIMER_ICR)寄存器。
在"输入边缘计时"模式下,在检测到边缘事件,但检测到后,计时器将继续运行
通过写入GPMTnILL寄存器,可以随时更改计时器间隔。 更改将在生效
写入后的下一个循环。
非常感谢