Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
LPC_CAN1->TDA1 = *(uint32_t *) &msg->data[0]; // Write first 4 data bytes
请告诉我为什么使用这个 *(uint32_t )以及在 uint32_t 之前和之后这个“”的目的是什么
此代码的目标是将存在的前 4 个字节复制msg->data[0]到LPC_CAN1->TDA1.
msg->data[0]
LPC_CAN1->TDA1
&msg->data[0]给出 msg->data[0] 的地址。
&msg->data[0]
(uint32_t *) &msg->data[0]将该地址转换为指向 32 位无符号整数的地址。
(uint32_t *) &msg->data[0]
*(uint32_t *) &msg->data[0]从地址中读取 uint32_t 值(4 字节无符号整数)。
*(uint32_t *) &msg->data[0]
希望这是有道理的。