Use CooCox or Em:Blocks if you want to use STM's own libs
You can get a free copy of Keil, but it has a limit of the max program file size
Also I got bogged down with keil as its modular and I couldnt figure out what modules I needed to install to get it to work with the F103
If you do decide to use Keil, you can use the GCC compilor with it, by changing a a load of settings (there are web pages about how to do this, which I'm sure you can find)
CooCox worked quite nicely for me, as long as you tick the correct boxes to load the correct libs and templates
I think I also had a go at Em:Blocks and it seemed to work, but all I was going was flashing a LED
However the Arduino IDE hides all the messy stuff about setting GPIO, e.g. just pinMode() takes about 20 lines of code to configure a single GPIO pin
and there is a lot of other stuff as well like the RCC and AFRemap stuff that you need to put in, if you are coding from scratch ;-(