2017-04-05 18 views
0

私はタイマーを定義する構造体を持っています。構造体内の要素の総称名を持ちたいと思います。私はT2CONbitsの代わりにTMR_IOのような一般的な名前を使用できるようにエイリアスを作成したいと思います。この構造は、MCU上のいくつかの制御ビットに付いていますが、私は再定義を行うには本当にひどい時が来ました。以下は、実際の構造の小さなサブセットです。構造体の名前のエイリアシング

extern volatile unsigned int T2CON __attribute__((section("sfrs"))); 
typedef union { 
    struct { 
    unsigned w:32; 
    }; 
} __T2CONbits_t; 
extern volatile __T2CONbits_t T2CONbits __asm__ ("T2CON") __attribute__((section("sfrs"))); 

T2CONbits.w = 0x12345678の私は、コードでこれを使用して、私は本当に、明示的に__T2CONbits_tの割り当てを使用せずに、この構造体へのエイリアスへの道たい方法です。私は本当にT2CONbitsに別名を付けることができるところがあるので、TMR_IOなどの汎用名を使用できます。

ご指摘いただきありがとうございます。

+2

私は理解していません。 '#define TMR_IO T2CONbits.w'のようなマクロを探していますか? – Barmar

+0

@Barmar問題は、非常に似たコードベースの異なるICがあることです。たとえば、1つのIC上にT5CONbitsがあり、別のICでT2CONbitsがあるので、#defineのようなものを、TMR_IO.wとして扱いたいと思っています。これらのexternsのすべてが、GCCを本当に厄介なものにしています私はどのように進めるか分からない。 :/ –

+0

@Barmar実際には#defineの提案がうまくいくようです。私は前に何が間違っていたのか分からない。それを書いて、私は答えを受け入れるでしょう。 –

答えて

1

は、マクロを使用します。

#define TMR_IO T2CONbits.w 

次にあなたが書くことができます。

TMR_IO = 0x12345678; 
関連する問題