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:TIMER_CFG_A_ACT_SETCLRTO 的问题

Guru**** 2450140 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/623738/tm4c1294ncpdt-issues-with-timer_cfg_a_act_setclrto

器件型号:TM4C1294NCPDT

我在 TM4C 上有一个有趣的计时器问题、我一直在尝试解决这个问题。

TIMER_CFG_A_ACT_TOGGLE 的工作方式与预期完全相同、但 TIMER_CFG_A_ACT_SETCLTO 不执行任何操作。 输出保持低电平。 在尝试 TIMER_CFG_A_ACT_SETTOGTO 和 TIMER_CFG_A_ACT_CLRTOGTO 后、超时操作似乎正常、但立即设置和清除不起作用。

#include 
#include 

#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
#include "inc/hw_memmap.h"

int main (void)
{
SysCtlClockFreqSet (SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480、120000000);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM);

SysCtlPeripheralEnable (SYSCTL_Periph_TIMER5);

while (!SysCtlPeripheralReady (SYSCTL_Periph_TIMER5));
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOM));
GPIOPinTypeTimer (GPIO_PORTM_BASE、GPIO_PIN_6);
GPIOPinConfigure (GPIO_PM6_T5CCP0);

while (1)
{
TimerConfigure (TIMER5_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_ONE_SHOT | TIMER_CFG_A_ACT_setto);
TimerLoadSet (TIMER5_base、TIMER_A、2400);
TimerEnable (TIMER5_base、TIMER_A);
SysCtlDelay (400000);
}

返回0;
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在您发布的示例代码中、您没有选择立即操作、您使用了"TIMER_CFG_A_ACT_setTO"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好 Bob

    我已经尝试了代码的几个不同选项。 当我复制和粘贴时、它碰巧是 TIMER_CFG_A_ACT_setto。 以下是我针对不同选项看到的行为:

    Timer_CFG_A_ACT_setto:设置超时

    Timer_CFG_A_ACT_TOGGLE:切换超时。

    Timer_CFG_A_ACT_SETTOGTO:切换超时、但立即不会发生该设置。

    Timer_CFG_A_ACT_CLRSETTO:第一次设置超时、但在下一次通过循环时从不清除。

    图案缝合为超时操作正常工作、但不是立即操作。

    我有一个具有逻辑分析仪的示波器、并且我尝试切换 GPIO 引脚、以便在发生对 TimerEnable 的调用以及 CCP 输出发生变化时发出信号。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我做了更多的测试、看起来我在第一次通过环路时在启动时获得单个脉冲、但在随后的环路上没有。

    我必须对计时器进行一些复位吗?

    我正在尝试创建异步脉冲、这就是为什么 PWM 不起作用的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更详细地阅读了数据表详细信息:

    13.4.1单次触发/周期定时器模式 GPTM 按照以下顺序配置为单次触发和周期模式:

    1:在进行任何修改之前、务必将定时器禁用(GPTMCTL 寄存器的 TnEN 位清零)。

    2.向 GPTM 配置寄存器(GPTMCFG)写入0x0000.0000。

    每次调用单次触发模式时、似乎都必须完成项目2。

    我刚刚使用了 TimerConfigure (TIMER5_base、0)来复位、但它也会覆盖 TAMR 和 TBMR。 如果需要、可以直接访问 GPTMCFG 寄存器。