我是嵌入式编程的新手。我有一个带有 2 个头文件的 PIC 微控制器:pic.h
和Timer_peripheral.h
.
在pic.h
定时器配置寄存器中已定义为:
__extension__ typedef struct tagT1CONBITS {
union {
struct {
unsigned :1;
unsigned TCS:1;
unsigned TSYNC:1;
unsigned :1;
unsigned TCKPS:2;
unsigned TGATE:1;
unsigned :6;
unsigned TSIDL:1;
unsigned :1;
unsigned TON:1;
};
struct {
unsigned :4;
unsigned TCKPS0:1;
unsigned TCKPS1:1;
};
};
} T1CONBITS;
在 中timer.h
,一些宏被定义为:
/* Timer1 Control Register (T1CON) Bit Defines */
#define T1_ON 0xffff /* Timer1 ON */
#define T1_OFF 0x7fff /* Timer1 OFF */
这与微控制器数据表相对应。unsigned
类型为 16 位。我试图以T1CONBITS
这种方式将 T1_ON 分配给我的结构变量:
T1CONBITS=T1_ON // which is wrong.
我知道我可以初始化一个结构,但我想在我的主函数中做一个赋值,我不想使用像这样的结构成员来做:
T1CONBITS.TCS=1;
T1CONBITS.TSYNC=1;
有没有办法做到这一点?如果不是,你为什么认为这些宏timer.h
已经被定义了?
感谢您的任何见解