CAN总线实验中,定义数据类型如下: typedef union _canmod_ { UINT32 Word; struct { UINT32 RM_BIT :1; //定义RM 位 UINT32 LOM_BIT :1; //定义LOM 位 UINT32 STM_BIT :1; //定义STM 位 UINT32 TPM_BIT :1; //定义TPM 位 UINT32 SM_BIT :1; //定义SM 位 UINT32 RPM_BIT :1; //定义RPM 位 UINT32 RSV_BIT1 :1; //保留位 UINT32 TM_BIT :1; //定义TM 位 UINT32 RSV_BIT24 :24; //保留位 }Bits; }uCANMod,*P_uCANMod; #define CANMOD(CanNum) (*((volatile P_uCANMod) (CANMOD_BADR+CanNum* CAN_OFFSET_ADR))) 我的理解是: (volatile P_uCANMod) (CANMOD_BADR+CanNum* CAN_OFFSET_ADR)是数字强制转换为地址,那么之后再*()又是怎么理解的,难道是取出地址中的数据吗? 还有CANMOD(CanNum)代表的是结构体的首地址吗? |