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
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.