私は組み込みプログラミングが初めてです。私は 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 ビットです。この方法でT1_ON を構造体変数に割り当てようとしましたT1CONBITS
:
T1CONBITS=T1_ON // which is wrong.
構造体を初期化できることはわかっていますが、メイン関数で割り当てを行いたいのですが、次のような構造体メンバーを使用してそれを行いたくありません。
T1CONBITS.TCS=1;
T1CONBITS.TSYNC=1;
それを行う方法はありますか?そうでない場合、なぜこれらのマクロtimer.h
が定義されていると思いますか?
洞察をありがとう