配置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位),然后第二次启动捕获,明明重装了值,但是它是在第一次的基础上减少。不够减又从一个很大的数开始往下减。我不知道程序哪里配置错误。弄了好久!哪位有配置好的捕获模式能回复下或者我哪里设置错了,说下。谢谢!!!
xyz549040622:
你有没有开启分离模式呢,他被连接为一个32位的定时器了,你看看寄存器中是否配置为16位成功了
xyz549040622:
还有,他是从你的预加载值开始递减的,你看看你的预加载值是多少呢,跟踪这个预加载值
TI中文支持网
