typedef struct //定义一个结构体类型 { uint16_t OutsideRelay :1; //使用1位(bit)来表示外部继电器状态,占用1位(bit)内存空间 uint16_t InvWork :2; //使用2位(bit)来表示逆变器工作状态,占用2位(bit)内存空间 uint16_t InvWorkFinal :2; //0 等待 1:离网 2 :并网,使用2位(bit)来表示逆变器最终工作状态,占用2位(bit)内存空间

uint16_t RelayGpioEnable :1; //使用1位(bit)来表示继电器GPIO是否可用,占用1位(bit)内存空间

uint16_t   rev  :10; //使用10位(bit)来表示保留位,占用10位(bit)内存空间

}MonitorWord_BITS; //定义一个名为MonitorWord_BITS的位域结构体类型 typedef union //定义一个共用体类型 { uint16_t all; //共用体包含一个16位整型变量all MonitorWord_BITS bit; //共用体包含一个MonitorWord_BITS类型的位域结构体变量bit }MonitorWord; //定义一个名为MonitorWord的共用体类型

注释:该代码定义了一个位域结构体类型MonitorWord_BITS和一个共用体类型MonitorWord,用于表示一些状态信息。其中,MonitorWord_BITS包含了5个成员变量,分别表示外部继电器状态、逆变器工作状态、逆变器最终工作状态、继电器GPIO是否可用和保留位,每个成员变量占用不同的bit位。MonitorWord则包含了一个16位整型变量all和一个MonitorWord_BITS类型的位域结构体变量bit,可以通过修改all变量或bit变量的成员来修改状态信息

typedef struct uint16_t OutsideRelay 1; uint16_t InvWork 2; uint16_t InvWorkFinal 2; 0 等待 1离网 2 并网 uint16_t RelayGpioEnable 1; uint16_t rev 10;MonitorWord_BITS;typedef union

原文地址: https://www.cveoy.top/t/topic/d88F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录