Switch off code read protect - saves 432 bytes
Inline data_init functions - saves 16 bytes
Added call to SystemInit()

SystemCoreClockUpdate() was incorrectly called. To initialize the clock
module, SystemInit() has to be called.
Also removed redundant SWM clock initialization
UART.c uses correct clock to derive baudraute

SystemCoreClock is the AHB/CPU clock. The Baudrate is derived from
__MAIN_CLOCK.
Optimized CMSIS to use fixed Clock of 30MHz

added #define __USE_DYNAMIC_CLOCK. If enabled the default CMSIS behavior
is observed, where a global variable is used for the clock rate. If
undefined, a fixed value is calculated for the clockrate. To enable
this, the clock definintion was moved to the header file.  This
modification allows to save several hundred bytes.
In addition the clock generation was initialized correctly to use the
internal RC oscillator and yield a 30Mhz clock via the PLL.