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.

[参考译文] TM4C1294NCPDT:计时器不能正常工作

Guru**** 2538955 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1136458/tm4c1294ncpdt-timer-doesn-t-work-as-expected

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

我已将 Timer0配置为64位并在周期模式下工作。 但是、结果看起来我只能配置第一次进入  TimerA_IntHandler 函数的时间。 之后、我完全无法控制进入 TimerA_IntHandler 的时间。 它始终尽可能快地进入中断。 我想知道是否需要在 TimerA_IntHandler 函数中执行任何操作、以便可以继续周期模式? 或者我是否在计时器配置中执行了错误操作? 谢谢。  

------------------------------------------

//配置计时器。

void ConfigureTimer (void){

    //================================  计时器0配置 64位计时器===================

        SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);

        //配置 64位周期定时器

        TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODICASE);

 

       //设置计时器超时的中断。

       TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);

       TimerIntRegister (TIMER0_BASE、TIMER_A、TimerA_IntHandler);

  

       TimerEnable (TIMER0_BASE、TIMER_A);

       TimerLoadSet64 (TIMER0_BASE、100000000);// x SEC

------------------------------------------

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="532435" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1136458/tm4c1294ncpdt-timer-doesn-t-work-as-expected "]中断的输入总是尽可能快。

    您的描述表明中断标志未被清除。 您必须在退出 ISR 之前清除中断标志、否则它会立即重新进入 ISR、因为中断仍在等待来自计时器模块的中断。 查看以下两个示例、其中 ISR 中的第一个任务是清除计时器中断标志。  

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\timers\timers.c

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\timer\period_16bit.c

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

    实际上、我忘记清除中断标志。 非常感谢您指出!