TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4C123GXL 使用TIVA关于定时器分频问题

我在使用timerA的TIMER3做捕获定时时发现使用TimerPrescaleSet(TIMER3_BASE, TIMER_A, 80);这个函数不能成功对定时器的时钟进行分频。请问一下是什么原因是我没有正确使用库函数吗?

pengyin huang:

这里在附上初始化程序希望工程师能看看是否有问题

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4); //使能外设 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER3); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); GPIOPinConfigure(GPIO_PB2_T3CCP0); GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_2,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); GPIOPinTypeTimer(GPIO_PORTB_BASE, GPIO_PIN_2);

//给定时器分频

TimerPrescaleSet(TIMER3_BASE, TIMER_A, 80);

// //设置定时器为捕获定时 TimerConfigure(TIMER3_BASE, (TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME)); //设置为双边沿触发 TimerControlEvent(TIMER3_BASE, TIMER_A, TIMER_EVENT_BOTH_EDGES); TimerIntEnable(TIMER3_BASE, TIMER_CAPA_EVENT); // IntEnable(INT_TIMER3A); //使能定时器中断 IntMasterEnable(); ROM_TimerLoadSet(TIMER3_BASE, TIMER_A, 0xffff); TimerEnable(TIMER3_BASE, TIMER_A);//使能定时器

pengyin huang:

回复 Wellin Zhang:

我是使用定时器的边沿捕获定时的功能,用来捕获PWM调制信号,发现从计数其中读出来的数值不正确,比实际设置的16位要大,而且发现设置了分频系数后,计数器中的计数值还是以计数器来计数。

翻看手册发现正如你所说的在单次或周期的定时是真正的预分频寄存器,而在边沿定时捕获时是寄存器是计数器的高8 位;就就不对系统分频了,只是增加了计数其中的容量,取出来时还系统将至去除分频值。

我现在还有个问题,我现在是用PWM模块时,使用的是PWM0和PWM1,引脚使用了D0,D1和B6、B7作为输出。D0,D1和B6、B7分别使用PWM0发生器0,和PWM1发生器0,可是初始化后只用D0和B6输出两路,这是为什么?不是手册上说能一个发生器产生两路独立的PWM吗?

赞(0)
未经允许不得转载:TI中文支持网 » TM4C123GXL 使用TIVA关于定时器分频问题
分享到: 更多 (0)