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.

[参考译文] TM4C1290NCPDT:未调用系统 Tick 中断处理程序。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1334630/tm4c1290ncpdt-system-tick-interrupt-handler-not-being-called

器件型号:TM4C1290NCPDT
主题中讨论的其他器件:TM4C1231H6PM

使用 TM4C1231H6PM 从工程中复制的工作代码。  初始化代码为:

   SysTickIntRegister (SysTickISR);
   SysTickPeriodSet (GetClkSpeed ()/100);   //每10ms 中断一次。 (将我们转换为 MS)、保留
   SysTickIntEnable ();             //与 tick.h 中的 tick_time_ms 同步
   SysTickEnable ();

   IntMasterEnable ();                                 //主机使能中断
   for (Loop=0;Loop<400000;Loop++);
   U32 SysTickCtrl = HWREG (NVIC_ST_CTRL);

SysTickCtrl 是65543 (十进制)、它进行了计数设置、因此它已翻转、CLK_SRC =系统时钟、INTEN = true、ENABLE=true

但永远不会调用中断服务例程。  系统时钟为20MHz。

????

谢谢、Doug

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

    您好!

     首先、在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\SysTick 中有一个 SysTick 示例。 请使用此示例。  

     我不确定 您是如何实现您的自定义  GetClkSpeed()函数的。 如果 GetClkSpeed()调用 SysCtlClockGet (),那么它将不起作用。  SysCtlClockGet ()是仅用于 TM4C123的 API。 不能使用 SysCtlClockGet () for TM4C129。 这将产生意外行为。  

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

    尊敬的 Charles:

    谢谢。  我的代码与示例完全相同,但有一个例外是该示例在调用 SysTickIntEnable ()和 SysTickEnable ()之前调用 IntMasterEnable ()。  当我执行该操作时、SysTick 现在正常运行、谢谢。