我正在使用Xmega编程,我需要在多个文件中使用一些标志。 所以我在h文件中将该标志声明为extern,并在主文件中将其初始化为全局。
global.h:
#ifndef GLOBAL_H_
#define GLOBAL_H_
typedef struct GLOBAL_FLAGS {
volatile uint8_t pidTimer:1;
volatile uint8_t dummy:7;
}GLOBAL_FLAGS;
// declaration
extern GLOBAL_FLAGS gFlags;
#endif
main.c中:
#include <avr/io.h>
#include <avr/interrupt.h>
#include "global.h"
#include "hv.h"
#include "pid.h"
// init
gFlags = {.pidTimer = 0, .dummy = 0};
// code....
int main(void){
// code....
// example use of flag
if(gFlags.pidTimer){
hv_run_pid();
gFlags.pidTimer = 0;
}
当我这样做时,我得到了一些错误。
我在哪里开始,我得到了这个:
错误:
gFlags的冲突类型
字段名称不在记录或联合初始值设定项
警告:
数据定义没有类型或存储类
类型默认为&#39; int&#39;在宣布&#39; gflags&#39;
我想要使用它我得到了这个:
错误:
我使用的是Atmel Studio 7.
答案 0 :(得分:0)
谢谢!
我换了
// init
gFlags = {.pidTimer = 0, .dummy = 0};
到
// init
GLOBAL_FLAGS gFlags;
它有效。