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

please tell me why this *(uint32_t ) is used and what is the purpose of this "" before and after the uint32_t

Oak Bytes
  • 4,649
  • 4
  • 36
  • 53
umar.121
  • 21
  • 5

1 Answers1

5

Objective of this code is to copy first 4 bytes present at msg->data[0] to LPC_CAN1->TDA1.

&msg->data[0] gives the address of msg->data[0].

(uint32_t *) &msg->data[0] casts that address to be an address pointing to a 32-bit unsigned integer.

*(uint32_t *) &msg->data[0] reads uint32_t value (4-byte unsigned integer) from the address.

Hope that makes sense.

Oak Bytes
  • 4,649
  • 4
  • 36
  • 53