首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对非类型定义的结构进行类型广播

对非类型定义的结构进行类型广播
EN

Stack Overflow用户
提问于 2012-05-24 13:45:47
回答 1查看 198关注 0票数 2

基本上,我正在从RTOS中的另一个线程中获取数据。这些数据是板上的一个引脚。所有IO端口都位于iofine.h文件中的结构/联合中。例如,看看Micrium是如何制作它的:

代码语言:javascript
复制
struct st_portd {
union {
    unsigned char BYTE;
    struct {
        unsigned char B0:1;
        unsigned char B1:1;
        unsigned char B2:1;
        unsigned char B3:1;
        unsigned char B4:1;
        unsigned char B5:1;
        unsigned char B6:1;
        unsigned char B7:1;
    } BIT;
} DDR;
unsigned char wk0[31];
union {
    unsigned char BYTE;
    struct {
        unsigned char B0:1;
        unsigned char B1:1;
        unsigned char B2:1;
        unsigned char B3:1;
        unsigned char B4:1;
        unsigned char B5:1;
        unsigned char B6:1;
        unsigned char B7:1;
    } BIT;
} DR;
unsigned char wk1[31];
union {
    unsigned char BYTE;
    struct {
        unsigned char B0:1;
        unsigned char B1:1;
        unsigned char B2:1;
        unsigned char B3:1;
        unsigned char B4:1;
        unsigned char B5:1;
        unsigned char B6:1;
        unsigned char B7:1;
    } BIT;
} PORT;
unsigned char wk2[31];
union {
    unsigned char BYTE;
    struct {
        unsigned char B0:1;
        unsigned char B1:1;
        unsigned char B2:1;
        unsigned char B3:1;
        unsigned char B4:1;
        unsigned char B5:1;
        unsigned char B6:1;
        unsigned char B7:1;
    } BIT;
} ICR;
unsigned char wk3[95];
union {
    unsigned char BYTE;
    struct {
        unsigned char B0:1;
        unsigned char B1:1;
        unsigned char B2:1;
        unsigned char B3:1;
        unsigned char B4:1;
        unsigned char B5:1;
        unsigned char B6:1;
        unsigned char B7:1;
    } BIT;
} PCR;
};

如果你问我的话。因此,我将这个引脚保存为结构中的2个字符,称为Port和Pin。

代码语言:javascript
复制
struct StepperMotor {
  CPU_INT32U ID;
  CPU_CHAR *EnablePort;
  CPU_CHAR EnablePin;
  CPU_CHAR *DirectionPort;
  CPU_CHAR DirectionPin;
  CPU_CHAR *PulsePort;
  CPU_CHAR PulsePin;
};

我想以这样的方式使用引脚:

代码语言:javascript
复制
(struct st_portd)(steppermotor->PulsePort)->DR.BYTE ^= (1 << steppermotor->PulsePin);

步进电机是结构。只有这样我才会说错话

请求成员“DR”的东西不是一个结构或联盟

我如何能够使用步进电机->PulsePort->DR.BYTE而不为它创建一个新的变量?我希望任何人都能帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-24 13:53:12

由于您正在转换一个指针,所以您应该将其转换为指向结构的指针,而不是结构本身,如下所示:

代码语言:javascript
复制
((struct st_portd*)steppermotor->PulsePort)->DR.BYTE ^= (1 << steppermotor->PulsePin);

还请注意,您的括号在一个错误的地方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10738725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档