各位老师,我想采用EK-TM4C1294XLTimer5 T5CCP0 PB2输出指定频率的方波脉冲,作了下面的程序,但一直无输出,不知道问题在哪里,请给与指正.
main()
{
// Set the clocking to run directly from the crystal at 120MHz.
g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |SYSCTL_USE_PLL|SYSCTL_CFG_VCO_480), 120000000);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER5);
ROM_GPIOPinTypeTimer(GPIO_PORTB_BASE, GPIO_PIN_2);
ROM_GPIOPinConfigure(GPIO_PB2_T5CCP0);
ROM_GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_DIR_MODE_OUT);
ROM_TimerConfigure(TIMER5_BASE, TIMER_CFG_PERIODIC);
ROM_TimerLoadSet(TIMER5_BASE, TIMER_A, g_ui32SysClock/2);
ROM_TimerEnable(TIMER5_BASE, TIMER_A);
while(1)
{
}
}
xyz549040622:
定时器不用中断,要输出指定频率的脉冲,不可能的。定时器的核心就是中断,不用定时器的话,只能人为的拉高或者拉低IO,中间加延时吧。
si si:
回复 xyz549040622:
好像Datasheet上关于定时器说明中有介绍可以从CCP输出,况且CCP作为事件捕捉可以作为输入源,TI DSP芯片中的定时器是可以不经中断在计数周期到达自动输出一个脉冲.若用中断的话由于硬件中断的优先级会导致输出脉冲频率误差,而且程序也会变得复杂. 真的不行只能用中断了.
xyz549040622:
回复 si si:
你说的那个是PWM,这个确实是可以的,PWM引脚输出固定的频率。需要使能PWM功能的。
Ken Wang:
你用的是Timer寄存器的功能,这个可以输出方波,但是确实需要在终端里面翻转电平。
用PWM模块的话,可以设置周期和占空比,然后硬件输出你要的方波。
建议看看tiva-ware里面关于PWM模块的应用。
谢谢