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.

[参考译文] TM4C1231H6PZ:无(定时器)中断

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1015215/tm4c1231h6pz-no-timer-interrupts

器件型号:TM4C1231H6PZ

您好!

我们有一个具有 TM4C1231的定制板。

问题是,我们看不到任何中断....

我们已将代码缩减为

编号://*********
//
// Timer0B 中断的中断处理程序。
//
//
无效
Timer0BIntHandler (空)

   //
   //清除计时器中断标志。
   //
   TimerIntClear (TIMER0_BASE、TIMER_TIMB_TIMEOUT);

   G_ui32Counter++;




//
//
//将 Timer0B 配置为带有中断的16位周期计数器
//每1ms。
//
//
内部
main (空)


   uint32_t ui32PrevCount = 0;

   SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);


   SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
   TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PERIODICASE);
   TimerLoadSet (TIMER0_BASE、TIMER_B、SysCtlClockGet ()/ 1000);
   IntMasterEnable();
   TimerIntEnable (TIMER0_BASE、TIMER_TIMB_TIMEOUT);
   IntEnable (INT_TIMER0B);
   TimerEnable (TIMER0_BASE、TIMER_B);

   //
   //在 Timer0B 运行时永久循环。
   //
   while (1)
   {

   }

如果我在 int 处理程序中放置一个断点、则从未触发 int。

在我可以看到的寄存器中、计数器将进行计数。

在启动文件中,我添加:

 Timer0BIntHandler、                     //计时器0子计时器 B

硬件问题是否会导致此行为?

有什么建议吗?

Andreas

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

    您好、Andreas、

    我怀疑中断正在触发、但您 的 g_ui32Counter 未更新。

    您是否  已像这样声明 g_ui32Counter 为易失性?

    volatile uint32_t g_ui32Counter++;

    此致、

    Ralph Jacobi

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

    您好、Ralph、

    不、这不是问题、

    我已经完成了"run to "并使用调试器设置断点。

    从未达到中断服务例程。

    我对 SysTick 计时器有相同的问题。

    我认为、我有一个全局中断问题。

    或者可能是硬件问题?

    Andreas

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

    您好、Andreas、

    因此、您可以确认是否将其设置为易失性? 编译器可以优化代码输出、然后不会触发断点。

    代码看起来不错、但我可以在周二的 EVM 上运行以进行验证。 延迟是由于美国假期。

    此致、
    Ralph Jacobi

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

    您好、Ralph、

    是的,我可以确认...

    它来自以下示例:

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripheral\timer

    我将其剥离到尽可能小的版本、以找出问题所在。

    我的项目或硬件可能有问题。

    我没有找到 TM4C1231的任何示例...

    //
    //
    //计数已调用的中断数的计数器。
    //
    //
    静态易失性 uint32_t g_ui32Counter = 0;

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

    您好、Ralph、

    我解决了我的问题...

    这是一个硬件问题。

    在原理图 Tiva TM4C123G LaunchPad 中 、端口 PF0仅被命名

    PF0而不 是"PF0/NMI"。

    我已经获取了自己设计的原理图、我想将引脚用作 PWM 输出。

    一个转售人把这个端口拉低了....

    Andreas