配置TIMER1A为捕获模式
void xxx(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB4_T1CCP0);
//
GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_4,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
// |
GPIOPinTypeTimer(GPIO_PORTB_BASE,GPIO_PIN_4);
//分不分频计数一样没有改变
TimerPrescaleSet(TIMER1_BASE, TIMER_A, 80);
//
TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR|TIMER_CFG_A_CAP_TIME);
TimerControlEvent(TIMER1_BASE, TIMER_A, TIMER_EVENT_BOTH_EDGES);
TimerIntEnable(TIMER1_BASE, TIMER_CAPA_EVENT);
IntEnable(INT_TIMER1A);
}
//捕获中断
void TIMER1A_Handler(void)
{
TimerIntClear(TIMER1_BASE,TIMER_CAPA_EVENT);
flagX++;
if(flagX==1)
StartX=TimerValueGet(TIMER1_BASE,TIMER_A);
if(flagX ==2)
{
EndX=TimerValueGet(TIMER1_BASE,TIMER_A);
flagX=0;
TimerDisable(TIMER1_BASE,TIMER_A);
}
}
//开始捕获
void Start_ultrasonic(void)
{
// Enable the timers.
TimerLoadSet(TIMER1_BASE, TIMER_A, 0xfffF);
TimerEnable(TIMER1_BASE, TIMER_A );
}
我设置了捕获模式。TIMER1A明明是16位,但是第一次启动它显示的是很大一个数据(应该是32位),然后第二次启动捕获,明明重装了值,但是它是在第一次的基础上减少。不够减又从一个很大的数开始往下减。我不知道程序哪里配置错误。弄了好久!哪位有配置好的捕获模式能回复下或者我哪里设置错了,说下。谢谢!!!