Hi Guys
I have a piece of code for flashing an LED using AT91R40807 on an
AT91EB40 evaluation board.I'm having difficult understanding the
following portion using casting
#define led_mask = (led1|led2|led3)
void flashled(int color) {
*(unsigned int*)(0xFFFOO10) = led_mask
*(unsigned int*)(0xFFFOO00) = led_mask
*(unsigned int*)(0xFFFOO34) = led_mask
....continues
my question is why were these memory addresses chosen "IN PARTICUALR"
when masking.As far as I know they just represent the location of the
output enable register,enable register and clear output data register
respectively.Probably you can tell me what actually happens with casting
used like this.
G
I am not sure if I understand exactly what it is you are asking; but the addresses are first cast to pointer types and then derefenced you modify their content. The cast is necessary to provide the absolute address with a 'type', i.e. it says this address points to an 'int'. Without providing type in this way, the compiler would not know how many bits to write. Clifford
Reply
Please log in before posting.