Pointer to volatile data (*((volatile uint32_t *)0x40000000))
<p>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. </p>

<pre><code>#define WATCHDOG0_LOAD_R        (*((volatile uint32_t *)0x40000000))
</code></pre>

<p>I have understood that it defines the identifier <code>WATCHDOG0_LOAD_R</code> 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?</p>