This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C123 TIMER 定时器问题



为什么定时器设置 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);

 

  • GuoQiang

    不知道你所说的预分频器失效是什么现象。 根据你的代码应该是将WTIMER0A配置为递减周期计数,此时TAPR中的值应该进行count down,

    另外,建议使用API函数进行TIMER的配置。

  • 预分频失效的意思就是说本来设计预分频后1MS计数器增减1,失效后就是按主频来增减1,增减得很快,

    直接用外部16M当主频,16000的预分频,

  • 国强,

    可能你对该处预分频寄存器的功能理解上有些偏差。当工作在单次触发或周期模式时,该寄存器允许软件扩充定时器的范围。

    而不是对Timer的时钟进行分频。

    TM4C123的Timer,只能使用system clock作为时钟源。

  • 预分频寄存器 允许软件扩充定时器的范围,

    那请问您 TimerPrescaleSet(TIMER1_BASE, TIMER_A,(80-1));这句代码 会对定时器的范围产生什么影响呢?

  • 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呢?