全球结构不起作用

时间:2017-09-07 07:57:01

标签: c microcontroller atmelstudio

我正在使用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;

我想要使用它我得到了这个:

错误:

  • 请求会员&pidTimer&#39;在不是结构或联盟的东西

我使用的是Atmel Studio 7.

1 个答案:

答案 0 :(得分:0)

谢谢!

我换了

// init
gFlags = {.pidTimer = 0, .dummy = 0};

// init
GLOBAL_FLAGS gFlags;

它有效。