为什么定时器设置 TIMER_O_TAMR.4=1后定时器预分频器失效了,
代码如下:
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_WTIMER0);
HWREG(WTIMER0_BASE + TIMER_O_CFG)=4;
HWREG(WTIMER0_BASE +TIMER_O_TAMR)=0x12;
HWREG(WTIMER0_BASE +TIMER_O_TBMR)=2;
HWREG(WTIMER0_BASE + TIMER_O_TAPR) = ROM_SysCtlClockGet()/1000;
ROM_TimerEnable(WTIMER0_BASE, TIMER_BOTH);
Wellin Zhang:
GuoQiang
不知道你所说的预分频器失效是什么现象。 根据你的代码应该是将WTIMER0A配置为递减周期计数,此时TAPR中的值应该进行count down,
另外,建议使用API函数进行TIMER的配置。
周国强:
回复 Wellin Zhang:
预分频失效的意思就是说本来设计预分频后1MS计数器增减1,失效后就是按主频来增减1,增减得很快,
直接用外部16M当主频,16000的预分频,
Wellin Zhang:
回复 周国强:
国强,
可能你对该处预分频寄存器的功能理解上有些偏差。当工作在单次触发或周期模式时,该寄存器允许软件扩充定时器的范围。
而不是对Timer的时钟进行分频。
TM4C123的Timer,只能使用system clock作为时钟源。
rongwei li:
回复 Wellin Zhang:
预分频寄存器 允许软件扩充定时器的范围,
那请问您 TimerPrescaleSet(TIMER1_BASE, TIMER_A,(80-1));这句代码 会对定时器的范围产生什么影响呢?
rongwei li:
回复 Wellin Zhang:
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的时钟,
如何将TIM配置到20Hz呢?