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