gpt4 book ai didi

c - 类型转换为未类型定义的结构

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:05 24 4
gpt4 key购买 nike

基本上我是从 RTOS 中的另一个线程获取数据。此数据是电路板上的一个引脚。所有 IO 端口都在 iodefine.h 文件的结构/union 中。有关 Micrium 如何制作的示例,请参阅此示例:

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;
};

如果你问我的话,这是非常聪明的方法。所以我将这个 pin 保存为一个名为 Port and Pin 的结构中的 2 个字符。

struct StepperMotor {
CPU_INT32U ID;
CPU_CHAR *EnablePort;
CPU_CHAR EnablePin;
CPU_CHAR *DirectionPort;
CPU_CHAR DirectionPin;
CPU_CHAR *PulsePort;
CPU_CHAR PulsePin;
};

我想以这种方式使用引脚:

(struct st_portd)(steppermotor->PulsePort)->DR.BYTE ^= (1 << steppermotor->PulsePin);

步进电机是结构体。只有这样我才会收到一条错误消息

request for member 'DR' in something not a structure or union

如何在不为其创建新变量的情况下使用步进电机->PulsePort->DR.BYTE?我希望有人能帮助我!

最佳答案

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

((struct st_portd*)steppermotor->PulsePort)->DR.BYTE ^= (1 << steppermotor->PulsePin);

另请注意,您的括号位置错误。

关于c - 类型转换为未类型定义的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10738725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com