如何将计时器配置为在 TM4C129ENCPDT 上具有32位捕捉分辨率? Tivaware 手册让我对如何使 TIMER0A 和 TIMER0B 成为单个32位捕捉感到困惑。 我不确定是否正确使用了"timer_both "。 我在"TimerConfigure"中没有尝试"TIMER_CFG_SPLIT_PAIR"、但从未调用中断。
我正在尝试测量间隔为10ms 的脉冲之间的时间。 因此、具有32位或4294967296个周期(43亿)并且以120MHz 的频率在主时钟上运行应该足以测量10ms。
下面是配置 TIMER0的代码:
秘书长的报告
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
ROM_SysCtlPeripheralEnable( SYSCTL_Periph_TIMER0 );
ROM_GPIOPinConfigure( GPIO_PA0_T0CCP0 );
ROM_GPIOPinTypeTimer( GPIO_Porta_base、GPIO_PIN_0);
ROM_IntMasterEnable();
ROM_TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME | TIMER_CFG_B_CAP_TIME);
ROM_TimerControlEvent( TIMER0_BASE、TIMER_Both、TIMER_EVENT_POS_EDGE );
ROM_TimerLoadSet (TIMER0_BASE、TIMER_A、0xFFFF);
ROM_TimerLoadSet (TIMER0_BASE、TIMER_Both、0xFFFF);
ROM_TimerIntClear (TIMER0_BASE、TIMER_CAP_EVENT);
ROM_TimerIntClear (TIMER0_BASE、TIMER_CAPB_EVENT);
ROM_TimerIntEnable( TIMER0_BASE,TIMER_A );
ROM_TimerIntEnable( TIMER0_BASE,TIMER_B );
ROM_IntEnable (INT_TIMER0A_TM4C129);
ROM_IntEnable( INT_TIMER0A );
ROM_TimerEnable (TIMER0_BASE、TIMER_A);
ROM_TimerEnable (TIMER0_BASE、TIMER_B);
(二
和处理程序:
(三
void TIMER0A_Handler (void){
ROM_TimerIntClear (TIMER0_BASE、TIMER_CAP_EVENT);
capture_duration = ROM_TimerValueGet (TIMER0_BASE、TIMER_A);
ROM_TimerLoadSet (TIMER0_BASE、TIMER_Both、0xFFFF);
}
"capture_duration"中的值不会从其中一个定时器寄存器传输。 但这并不让我感到意外、因为我认为设置不正确。
***我已确认(除非我非常困惑)***
1 -捕获中断例程被正确调用。
2 -计时器寄存器正在更改。
3-我在 PA0 (引脚33)上有一个10ms 的周期切换输入。
如果相关、我将使用 Keil Microvision 5.24.1。 和 J-Link。
我阅读了几篇出色的先前文章、其中包括:
"365 <a href="">">e2e.ti.com/.../358696""> s://e2e.ti.com/support/microcontrollerss/stellaris_arm/f/471/t/358696"
和
谢谢、
Jeff



