在使用TM4C1294 LAUNCHPAD的时候,外围模块固件库有一个TimerSynchronize 函数 ,官方说明是所选定时器将会开始同步计数,但是实际上应该如何使用这个模式,其开始同步计数的条件是其中一个定时器使能还是需要所选的定时器全部使能呢?
如果我需要使用定时器0和定时器1同步计数(分别处于输入边沿计数模式和周期递减计数模式)我需要怎样去实现这个功能呢?(因为需要等精度测频,所以我希望两个定时器是同时启动的)
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
找到一段官方给的同步定时器的代码,可以参考看看
int main(void) { uint32_t a,b,c; SysCtlClockSet(SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN|SYSCTL_USE_PLL|SYSCTL_SYSDIV_5); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2); TimerConfigure(TIMER0_BASE,TIMER_CFG_PERIODIC); TimerConfigure(TIMER1_BASE,TIMER_CFG_PERIODIC); TimerConfigure(TIMER2_BASE,TIMER_CFG_PERIODIC); TimerLoadSet(TIMER0_BASE,TIMER_A,SysCtlClockGet()-1); TimerLoadSet(TIMER1_BASE,TIMER_A,SysCtlClockGet()-1); TimerLoadSet(TIMER2_BASE,TIMER_A,SysCtlClockGet()-1); TimerEnable(TIMER0_BASE, TIMER_A); SysCtlDelay(500); TimerEnable(TIMER1_BASE, TIMER_A); SysCtlDelay(500); TimerEnable(TIMER2_BASE, TIMER_A); SysCtlDelay(500); TimerSynchronize(TIMER0_BASE,TIMER_0A_SYNC|TIMER_1A_SYNC|TIMER_2A_SYNC); TimerSynchronize(TIMER0_BASE,0); TimerControlStall(TIMER0_BASE, TIMER_A, true); //Assist in debug by stalling timer at breakpoints TimerControlStall(TIMER1_BASE, TIMER_A, true); //Assist in debug by stalling timer at breakpoints TimerControlStall(TIMER2_BASE, TIMER_A, true); //Assist in debug by stalling timer at breakpoints while(1) { SysCtlDelay(333333); a=TimerValueGet(TIMER0_BASE,TIMER_A); b=TimerValueGet(TIMER1_BASE,TIMER_A); c=TimerValueGet(TIMER2_BASE,TIMER_A); } }