1
LPC_CAN1->TDA1 = *(uint32_t *) &msg->data[0];    // Write first 4 data bytes 

この *(uint32_t ) が使用される理由と、uint32_t の前後のこの " "の目的を教えてください。

4

1 に答える 1

5

このコードの目的は、に存在する最初の 4 バイトを にコピーmsg->data[0]することLPC_CAN1->TDA1です。

&msg->data[0]msg->data[0] のアドレスを与える。

(uint32_t *) &msg->data[0]そのアドレスを 32 ビットの符号なし整数を指すアドレスにキャストします。

*(uint32_t *) &msg->data[0]アドレスから uint32_t 値 (4 バイトの符号なし整数) を読み取ります。

それが理にかなっていることを願っています。

于 2016-02-23T13:35:53.907 に答える