用库函数清楚定时器的计数值
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.
定时器中的值是没法清除的,你可以通过给预加载寄存器重新赋值来改变它的值。
麻烦你具体说明一下吗,那个函数?我不懂你的意思,我是初学者,不好意思
你的表述不是很清楚。定时器是自动运行的,为什么要清除定时器的计数值呢,清除有什么意义呢?
你好,可以说下你的思路么?为什么过程中需要清除定时器的计数值呢?
开启一个外部中断这样读 就可以了
void GPIOAIntHandler(void)
{
unsigned int Status;
Status=GPIOIntStatus(GPIO_PORTA_BASE,true);
GPIOIntClear(GPIO_PORTA_BASE,Status);
if(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_7))
{
RiseCount = TimerValueGet(TIMER0_BASE, TIMER_A);
while(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_7));
DeclineCount = TimerValueGet(TIMER0_BASE, TIMER_A);
Count = DeclineCount>RiseCount?(DeclineCount-RiseCount):(49999+DeclineCount-RiseCount);
g_Distance = Count/58.0;
}
}
SysCtlClockSet(SYSCTL_SYSDIV_16|SYSCTL_USE_OSC|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN)
TimerConfigure(TIMER0_BASE, TIMER_CFG_A_PERIODIC_UP); //周期性向上计数 Half-width periodic timer
TimerLoadSet(TIMER0_BASE, TIMER_A,49999); //配置20Hz 1MHz/(49999+1) = 20Hz
49999 同样可以SysCtlClockGet()/20-1 算的(1MHz主频下)
以上是我在1MHz配置情况下配置20Hz TIM的过程, 请问我主频配置到80MHz情况下,如何将TIM配置到20Hz呢?
不管主频是多少。用SysCtlClockGet()/20-1都是20hz的。
嗯嗯, 搞了一天 发现是这样的,原先我还以为在16Bit Time下 装载值不能大于0xFFFF,(TimerLoadSet(TIMER0_BASE, TIMER_A,4000000-1);)走入误区了,谢谢了
16bit timer下,这个装载值也应该是有上限的,你实际测量试试。