【发布时间】:2016-02-19 09:55:15
【问题描述】:
LPC_CAN1->TDA1 = *(uint32_t *) &msg->data[0]; // Write first 4 data bytes
请告诉我为什么使用这个 *(uint32_t ) 以及在 uint32_t 前后这个 "" 的用途是什么
【问题讨论】:
LPC_CAN1->TDA1 = *(uint32_t *) &msg->data[0]; // Write first 4 data bytes
请告诉我为什么使用这个 *(uint32_t ) 以及在 uint32_t 前后这个 "" 的用途是什么
【问题讨论】:
此代码的目标是将msg->data[0] 中的前4 个字节复制到LPC_CAN1->TDA1。
&msg->data[0] 给出了 msg->data[0] 的地址。
(uint32_t *) &msg->data[0] 将该地址转换为指向 32 位无符号整数的地址。
*(uint32_t *) &msg->data[0] 从地址中读取 uint32_t 值(4 字节无符号整数)。
希望这是有道理的。
【讨论】: