This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你(们)好
我想在代码中执行位字段、如位字段 TI。
我这样做:
在我的 Global_VAR.c 文件中、我编写代码。
结构状态七透明度{
uint16 Enable_transmition :1;
uint16 CH1_transmit :1;
uint16 CH2_transmit :1;
uint16 ch3_transmit:1;
uint16通道4_transmit:1;
uint16 rsv11:11;
};
联合转换 Service_REG{
uint16全部;
结构状态七 Transmition 位;
};
结构 Service_REG{
联合转换 Service_REG 转换 Service_REG;
};
结构 Service_REG SERVICE_REG;
那么、在我的 Global_Var.h 文件中、我接下来写入:
结构状态七透明度{
uint16 Enable_transmition :1;
uint16 CH1_transmit :1;
uint16 CH2_transmit :1;
uint16 ch3_transmit:1;
uint16通道4_transmit:1;
uint16 rsv11:11;
};
联合转换 Service_REG{
uint16全部;
结构状态七 Transmition 位;
};
结构 Service_REG{
联合转换 Service_REG 转换 Service_REG;
};
extern struct Service_REG service_REG;
在 main.c 文件中、我写入:
Service_REG.TransmiionService_REG.bit.Enable_transmition = 1;
Code Composer 使构建和排序正常。 但我不确定我的位字段是否正确声明。 首先、在 Global_Var.h 文件中、我在 结构之间写入 extern、如下所示:
extern struct StatusSeviceTransmition{
uint16 Enable_transmition :1;
uint16 CH1_transmit :1;
uint16 CH2_transmit :1;
uint16 ch3_transmit:1;
uint16通道4_transmit:1;
uint16 rsv11:11;
};
生成器生成此警告: 警告#1054-D:可能未在此指定存储类。
请告诉我、我是否正确地声明了我的结构? 如果不是、那么它是如何正确的?
您好!
您只需要在.h 文件中定义结构和联合体、而在.h 文件中需要为 extern 的唯一内容是 service_REG 的声明。 您唯一需要放入.c 文件的项是 service_REG 的声明(不带 extern)。
此外、如果 TransmiionService_REG 是您计划放入 Service_REG 的唯一项、则可以跳过定义 Service_REG 并直接使用 UNION。 类似如下:
在.h 中
外部联合事务 Service_REG Service_REG;
在.c 中
UNION TransmiionService_REG SERVICE_REG;
在 main.c 中
SERVICE_REG.bit.Enable_transmition = 1;
这不是必需的、但输入的时间更短、更少。
惠特尼