我已经定义了一个名为" ledFlag"的全局变量。在一个源文件中,此源文件还具有用于连接到Interupt引脚的按钮的ISR。按下按钮后,将在ISR中设置ledFlag变量。由于主应用程序位于另一个源文件中,因此我已将ledFlag在应用程序文件中作为extern进行十分转换。但我得到了未定义的变量错误引用。我该如何解决?我正在使用Source Insight来编辑源文件。
源文件1:
UINT32 ledFlag=0;
void ISR()
{
status = readGpio...
if (status == High)
{
ledFlag = 1;
}
else
{}
}
源文件2:
extern UINT32 ledFlag;
main()
{
if (ledFlag)
dothis;
}
//粗略插图。
答案 0 :(得分:0)
首先检查两个文件是否正确编译在一起,并将两者都添加到项目中。
其次:你的编译器最有可能优化变量调用,对它能够做什么并且可以缩短做出错误的假设。
为了防止这种情况,请执行以下操作:
源文件1
volatile UINT32 ledFlag=0;
void ISR()
{
status = readGpio...
if (status == High)
{
ledFlag = 1;
}
else
{}
}
源文件2:
volatile extern UINT32 ledFlag;
main()
{
if (ledFlag)
dothis;
}