中级会员
- 积分
- 234
- 金钱
- 234
- 注册时间
- 2015-12-16
- 在线时间
- 32 小时
|
楼主 |
发表于 2016-7-1 18:26:10
|
显示全部楼层
再查资料,再折腾,
在goio_init.c中编写如下代码:
//----------------------------------
//位变量标志位
//----------------------------------
typedef struct
{
unsigned char no0:1;
unsigned char no1:1;
unsigned char no2:1;
unsigned char no3:1;
unsigned char no4:1;
unsigned char no5:1;
unsigned char no6:1;
unsigned char no7:1;
} __ByteBit8 ;
volatile union { unsigned char FlagA; __ByteBit8 FlagA_bit; } ;
#define FlagWG FlagA_bit.no0
以上编译通过,但只能在gpio_init.c中调用FlagWG
如果在其它文件如main.c中调用FlagWG,就会报错,说没有定义FlagWG
Error[Pe020]: identifier "FlagWG" is undefined
如果在gpio_init.h中加入如下一行,也报错
extern unsigned char FlagA;
折腾死了,不知如何做了
其实我的需求挺简单
【需求】
1.定义一个字节FlagA,包含8个位
2.可以同时置位或复位,如:
FlagA=0x00;
FlagA=0xff
3.通过#define语句,可以对某一个位进行置位或复位
4.在多个.c文件的结构中,能够被其它文件调用
如在gpio.init.c/h中定义,能够被main.c调用,当然会有#include "gpio_init.c"
请教诸位,到底应该如何做
本人一直使用汇编,对C不熟悉,初次用C语言,感觉方便的同时,也深感真TMD啰嗦,
汇编:直接了当;
C语言:总感觉带着避孕套干那事,总隔那么一层,让你不痛快 |
|