Difference between revisions of "Const and volatile type qualifiers"

From Teknologisk videncenter
Jump to: navigation, search
m (Links)
m
Line 6: Line 6:
 
=Memorymapped access to a register=
 
=Memorymapped access to a register=
 
==Example 1==
 
==Example 1==
In the example below the register 32 bit register located at address 0x40000 can be accessed
+
In the example below the register 32 bit register located at address 0x40000 can be accessed through the 
 +
 
 +
<source lang=c>
 +
 
 +
unsigned int volatile * const uartreg = (unsigned int *) 0x40000;
 +
*uartreg |= 0x80881119;
 +
</source>
 
=Links=
 
=Links=
 
*[http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html Const and volatile]
 
*[http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html Const and volatile]

Revision as of 10:09, 31 August 2011

const

const means that something is not modifiable, so a data object that is declared with const as a part of its type specification must not be assigned to in any way during the run of a program.

volatile

The use of volatile ensures that the compiler always carries out the memory accesses, rather than optimizing them out (for example if the access is in a loop).

Memorymapped access to a register

Example 1

In the example below the register 32 bit register located at address 0x40000 can be accessed through the

unsigned int volatile * const uartreg = (unsigned int *) 0x40000;
*uartreg |= 0x80881119;

Links