我正在开发一个固件程序,该程序最初是用mbed编写的,并由另一位工程师进行了一些调整。在将此代码移至Platform IO时遇到一些问题。
平台上的main.cpp文件很短,仅用于调用Platform.h,其中包含设备状态机的代码:
main.cpp
#include <Platform.h>
int main() {
Platform_Mode = INIT;
while(1) {
Platform_Run();
while(1) {
}
}
}
Platform.h
//platform code for Ticker 2
#ifndef PLATFORM_H
#define PLATFORM_H
#include "mbed.h"
#include "PS2Keyboard.h"
#include "TextLCD.h"
#include "epd4in2.h"
#include "epdpaint.h"
#include "Editor.h"
#define COLORED 0
#define UNCOLORED 1
typedef enum
{
INIT, /*!< Start/Begin/Init */
EDITOR, /*!< Run */
DEBUG
} Platform_Mode_t;
extern Platform_Mode_t Platform_Mode;
bool Platform_Run();
bool Platform_Init(void);
bool Platform_Editor(void);
void Platform_LED_Display(float R, float G, float B);
#endif
Platform.cpp包含(为您节省整个文件)
Platform_Mode_t Platform_Mode;
所有这些都可以在Mbed在线编译器中很好地编译。但是,在我的Platform IO环境中,我得到:
'Platform_Mode' was not declared in this scope
'INIT' was not declared in this scope
'Platform_Run' was not declared in this scope
等,用于每个平台函数调用。
我对编译器问题没有经验,而我对为什么跨平台的情况会有所不同感到迷惑。这似乎太基础了,不可能在Platform IO方面造成错误,而且我的运行过程显示库依赖关系已正确定位。 Mbed的编译器是否已经在补偿与Platform IO不相关的范围?