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:系统在第二次调用 TimerDisable ()时分支到 FaultISR ()。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1391139/tm4c1290ncpdt-system-branches-to-faultisr-on-second-call-to-timerdisable

器件型号:TM4C1290NCPDT

工具与软件:

我正在尝试将计时器用作脉冲计数器、代码如下:

SysCtlPeripheralEnable (SYSCTL_PERIPH_TIMER4);

GPIOPinTypeTimer (GPIO_PORTD_BASE、0x80);

GPIOPinConfigure (GPIO_PD7_T4CCP1);

 

TimerDisable (WTIMER4_BASE、TIMER_A);     //停止计数

TimerConfigure (WTIMER4_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_COUNT_UP | TIMER_CFG_A_ACT_NONE);

TimerControlEvent (WTIMER4_BASE、TIMER_A、TIMER_EVENT_NEG_EDGE);

TimerLoadSet (WTIMER4_BASE、TIMER_A、0);

TimerPrescaleSet (WTIMER4_BASE、TIMER_A、0xFFFF);

TimerMatchSet (WTIMER4_BASE、TIMER_A、0xFFFFFFF0);

TimerPrescaleMatchSet (WTIMER4_BASE、TIMER_A、0xFFF0);

TIMER4_TAV_R = 0;

TimerEnable (WTIMER4_BASE、TIMER_A);      //开始计数

 

SysTickIntDisable ();

TimerDisable (WTIMER4_BASE、TIMER_A);     //停止计数

SysTickIntEnable ();

 当它到达第二个 TimerDisable()时、它将分支到 FaultISR()。

提供帮助。  谢谢

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

    尊敬的 Doug:

     TM4C129 MCU 上没有 WTIMER4。 事实上、TM4C129上没有宽计时器。 宽计时器仅在 TM4C123 MCU 上可用。 您需要从 WTIMER4_BASE 更改为 TIMER4_BASE。 另请注意、如果您要在 TIMER4_BASE 上使用 TIMER_A、则该引脚位于 PM4、PB0或 PD6上。 PD7用于 T4CCP1、而是由 TIMER_B 控制。 相反、如果您想对 T4CCP1使用 PD7、那么您需要在代码中更改为 TIMER_B。  

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

    我认为这解决了问题、但现在我遇到了一个新的故障、因此我无法确定。  让我们现在将其称为解决方案。

    谢谢 Charles。