The STM32 F1xx micro-controllers are based upon the ARM Cortex-
M3 core. The Cortex-M3 is also the basis for micro-controllers from a number
of other manufacturers including TI, NXP, Toshiba, and Atmel. Sharing
a common core means that the software development tools including compiler
and debugger are common across a wide range of micro-controllers. The
Cortex-M3 differs from previous generations of ARM processors by defining a
number of key peripherals as part of the core architecture including interrupt
controller, system timer, and debug and trace hardware (including external
interfaces). This additional level of integration means that system software
such as real-time operating systems and hardware development tools such as
debugger interfaces can be common across the family of processors. The various
Cortex-M3 based micro-controller families differ significantly in terms of
hardware peripherals and memory – the STM32 family peripherals are completely
different architecturally from the NXP family peripherals even where
they have similar functionality. In this chapter we introduce key aspects of
the Cortex-M3 core and of the STM32 F1xx micro-controllers.