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.

[参考译文] 在未定义 P/N 的情况下使用 INT_TIMER0A (隐式声明 INT_RE析)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/605324/using-int_timer0a-without-a-p-n-defined-int_resolve-declared-implicitly

主题中讨论的其他器件:TM4C123

我需要在适用于 TM4C123或129的通用库中使用 IntEnable (INT_TIMER6A)。

嗯、INT_TIMER6A  扩展到 INT_CONCAT (INT_TIMER6A_INT_DEVICE_CLASS)、如果库中没有定义 p/n (就像这样)、则进一步转到:

#define INT_DEVICE_CLASS"    未知"

导致错误

隐式声明的函数 INT_resolve

是否有一个(简单)的解决方案?

为了便于进一步参考、该主题的主题是相同的、但这里只是一般性的解释、而不是解决方案。

e2e.ti.com/.../424662

此致

布鲁诺

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

    [引用 user="Bruno Saraiva">我需要在通用库中使用 IntEnable (INT_TIMER6A);通用库应适用于 TM4C123或129。

    嗯、INT_TIMER6A  扩展到 INT_CONCAT (INT_TIMER6A_INT_DEVICE_CLASS)、如果库中没有定义 p/n (就像这样)、则进一步转到[/QUARGE_ISE_TM4C129 宏允许对代码是否在 TM4C129类处理器上运行进行运行时测试。 因此、我建议编写库函数来测试代码运行在哪个类上、然后选择 TM4C123或 TM4C129类特定中断向量编号。

    但是、在编写以下代码时、意识到 TM4C123类不包含 TIMER6A。

    以下是在编译期间未定义器件型号宏的库中编译的代码片段、供参考:

    #include 
    #include 
    
    #include 
    #include 
    #include 
    #include 
    
    void enable_timer_interrupt (void)
    {
    if (class_in_TM4C129)
    {
    IntEnable (INT_TIMER6A_TM4C129);
    }
    其他
    {
    /* TM4C123类没有 TIMER6A、因此无法启用中断
    IntEnable (INT_TIMER6A_TM4C123);
    */
    }
    } 

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

    与对库中的每个中断矢量使用 if 语句不同、更可维护的解决方案可能是使用 诸如 run_time_resolve_INT 之类的宏:

    #include 
    #include 
    
    #include 
    #include 
    #include 
    #include 
    
    /*
    在运行时解析 TMC4C123或 TM4C129类特定的中断向量。
    *如果 TMC4C123或 TM4C129类处理器上都不存在 intname、则会导致编译错误。
    */
    #define RUN_TIME_Resolve_INT (intname)(class_IS_TM4C129? intname##_TM4C129:intname##_TM4C123)
    
    void enable_timer_interrupt (void)
    {
    IntEnable (run_time_resolve_INT (INT_TIMER5A));
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢切斯特。
    现在、我将保留此解决方案(尽管它确实在您的第一次答复后发布了另一个更"优雅"的解决方案。
    如果其他读取器搜索到这一点、可能需要重复的是、TM4C123器件上的32位计时器实际上仅达到5A/5B。
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Bruno Saraiva"]... 事实上、TM4C123器件上的32位计时器仅达到5A/5B。[/引述]

    "只去"-(除非朋友 Bruno "开玩笑")许多较新的版本(在我的书中、[来自其他人]极好的 ARM MCU)-会让他们的"眼睛"接触到超过2个这样的32位计时器。

    这家供应商在这本谦逊的记者书中在计时器功能和编号方面做得很出色...   (本报记者将(现在)闭口,“只走”……)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这种情况下、让我们不要忘记、除了"唯一的"6X 32位计时器(0至5)、123系列上还有另一个6X 64位计时器...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    事实上,这个微马上有足够的计时器,足以以金属方式阻住众所周知的马。

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

    [引用 user="Robert Adsett72"]此微控制器上有足够的计时器来光大马进行元化抑制

    然而-(在今天的"当前事件/关键字/供应商回避 主题"中保留)- 可能"窒息"(甚至是计量)甚至阻止了一只马(可能被视为光大)连续捕获著名的"三冠!"    

    应该注意的是、每匹马都携带一个基于 MCU 的射频器件、该器件向巨大的 Churchill Downs 记分板发送高度精确的"跟踪位置数据"。   (这样,赛道的“现场群众”就能看到比赛!    没有这种记分板-现场门票持有者-"最好看"只有一个极好的比赛和赛道的"细小鞋"...)