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.

[参考译文] TMS320F280039C:32位 ECAP 计数器变量

Guru**** 2826755 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1353619/tms320f280039c-ecap-counter-variable-in-32-bit

器件型号:TMS320F280039C
主题中讨论的其他器件:C2000WARE

亲爱的香榭丽舍大街,

我是为我们的客户提出这个问题的。

在我们的 C2000ware 示例中、  

C:\ti\cc2000\C2000Ware_5_01_00_00\driverlib\f28003x\examples\ecap\ecap_ex2_capture_pwm.c

我们使用  

volatile uint16_t cap2Count;
volatile uint16_t cap3Count;
volatile uint16_t cap4Count;

...

cap2Count = ECAP_getEventTimeStamp (myECAP0_BASE、ECAP_EVENT_2);
cap3Count = ECAP_getEventTimeStamp (myECAP0_BASE、ECAP_EVENT_3);
cap4Count = ECAP_getEventTimeStamp (myECAP0_BASE、ECAP_EVENT_4);

Question:

由于 ECAP 计数器是32位的、我们是否应该使用 uint32_t 而不是 uint16_t 来处理 ECAP 计数器值?

例如、如果结果大于65536、情况如何?

也就是说、我们认为我们应将它们定义为32位。

Volatile uint32_t cap2Count;
Volatile uint32_t cap3Count;
Volatile uint32_t cap4Count;

你怎么看?

韦恩

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

    韦恩、您好!

    是的、您是正确的、 driverlib 从该函数调用返回 uint32_t。 我已为此创建了一个 TT、并将在下一个 C2000ware 版本中进行更新。

    如果结果大于65535、uINT 将回绕到0。

    此致!

    马瑞安

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

    尊敬的 Ryan:

    感谢您的确认。  
    事实上、用户在提到此示例以捕获更长时间(ECAP 计数> 65536计数)的外部 GPIO 时发现了这个问题。  

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

    韦恩、您好!

    不用客气。 感谢您注意到这一点并向我们提供反馈。

    此致!

    马瑞安