I am analyzing a peripheral driver's files and found some register mapping code. I have basic knowledge about pointers, but am unable to understand the below code.
#define WATCHDOG0_LOAD_R (*((volatile uint32_t *)0x40000000))
I have understood that it defines the identifier WATCHDOG0_LOAD_R
to the register's memory address. But I am not able to understand the syntax on the right side. Could anyone explain me in detail why this pointer is written in such a way?