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.

[参考译文] TM4C123GH6PM:TM4C123定时器预分频器 n#39;t 似乎没有任何影响

Guru**** 2487425 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/736907/tm4c123gh6pm-tm4c123-timer-prescaler-doesn-t-seem-to-have-any-effect

器件型号:TM4C123GH6PM

您好!

我使用 timer0每1秒生成一次中断。 这可以正常工作、但现在我想使用预分频器将中断周期增加到任何秒数。 如果没有预分频器、我每隔1秒就会收到一个中断、我希望将预分频器设置为1、那么我每2秒就会收到一个中断、依此类推、但这不起作用。

我初始化 timer0的代码:

void timer0_init (void){

//我们假设系统时钟频率为40MHz -> T = 25ns

/*在时钟门控控制中启用16/32位宽通用定时器0时钟*
SYSCTL_RCGCTIME_R |= 0x01;

/*在修改前确保禁用 timerA */
TIMER0_CTL_R &=~0x01;

/*选择32位配置*/
TIMER0_CFG_R = 0x00000000;

/*根据需要将计时器配置为周期性、倒计数和其他功能*/
TIMER0_TAMR_R = 0x02;

/*加载起始值*/
TIMER0_TAILR_R = 0x26259ff;//40MHz ->要每秒生成一个中断、要加载的值为:40.0000 - 1 = 39.999.999 -> 0x26259ff

//预分频器??? 没有任何影响
TIMER0_TAPR_R = 0xff;//尝试使用不同的值而不起作用

/*在 NVIC 中启用 Timer0中断*/
ROM_IntEnable (INT_TIMER0A);

/*启用中断*/
TIMER0_IMR_R |= 0x01;

/*开始计数*/
TIMER0_CTL_R |= 0x01;
} 

我缺少什么?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我已经意识到、预分频器仅在使用半个计时器时工作。 我已经修改了代码、现在运行正常。 谢谢!