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.

[参考译文] MSP430FR2355:.lib 中 ISR 中的计数器变量问题

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/952452/msp430fr2355-counter-variable-in-isr-in-lib-issue

器件型号:MSP430FR2355

我有一个在计时器 ISR 内递增的计数器变量。  此 ISR 位于构建为静态库的 c 文件中。  在此项目中、我有一个头文件、该文件声明变量 extern:

头文件:

extern volatile uint timer2_isr_ctnr;

C 文件:

#ifdef TIMERB0
#pragma vector = TIMER2_B0_vector
__interrupt void T2_B0 (void)
{
timer2_ISR_CNTR++;
LPM3_EXIT;
}
#endif

编译库时出现以下错误:

"../Source/lprs_mspConfig.c、第160行:错误#20:标识符"timer2_ISR_cntr"未定义

我计划在另一个项目的 main 中定义变量。  我不能这么做吗?  似乎我从未在库项目中定义变量,而是在这方面做了平衡...

谢谢

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

    大家好、感谢您的发帖!

    >>我计划在另一个项目的 main 中定义变量。  我不能这么做吗?

    我想您可以尝试这种方法。

    在编译错误时、我将查看详细信息、并在稍后更新给您。

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

    此变量是否在此库 C 文件中的任何位置声明? 是否包含标头?

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

    是的、头文件包含在.lib 构建中。   

    该变量仅在头文件中声明为我在上面发布的变量、而 C 文件中唯一的引用是我列出的内容。  我没有在 C 文件中声明它。

    我将变量剪切并粘贴到标题中,库现在会编译...可能是某种类型的拼写错误。

    我现在看到的问题是、在我的应用程序 main.c (另一个项目)中、我定义了变量:

    volatile uint timer2_ISR_cntr = 0;
    

    但编译器会标记特定于该变量的错误

    未定义的首次引用
    符号
    ------ --------
    timer2_ISR_cntr D:/Customers/Firmware/LPRS_lib/Debug/LPRS_lib.lib

    您能告诉我我在这里缺少什么吗?

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

    它看起来好像是在向库中添加标头、但 ISR 中的文件不包括#include。 这意味着、当编译器查看 ISR 时、它在作用域中找不到任何指示变量是什么的内容。除非您#include、否则编译器不知道该头文件。

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

    大卫...

    请看上一篇帖子,因为我添加了信息....

    带有 ISR 的文件确实包含报头。

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

    我解决了这个问题

    位置,位置,位置都是一切  定义必须移动到 main 之外。

    感谢所有帮助。