2017-04-05 70 views
0

我有一个定义一个计时器的结构,我想有一个结构中的元素的通用名称。我想创建一个别名,以便我可以使用通用名称,如TMR_IO而不是T2CONbits。这种结构附属于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,它们是非常相似的代码库。例如,在一个IC上,我们有T5CONbits,另一个是T2CONbits,所以我想按照你的建议有一个类似于#define的东西,但是将其作为TMR_IO.w来解决它。所有这些外部接口都导致GCC非常挑剔我不知道如何继续。 :/ –

+0

@Barmar其实,你的#定义建议似乎可以正常工作。我不知道我以前做错了什么。写下来,我会接受答案。 –

回答

1

使用宏:

#define TMR_IO T2CONbits.w 

然后,你可以写:

TMR_IO = 0x12345678;