There are many choices when going from Arduino to something more powerful and closer to the metal.
- Some ports of Arduino to other MCU exist, e.g. Energia os as odgen says stm32duino (but the site has gone).
- You might try mbed, the platform runs (with some difference in support) on many MCUs and (cheap) development boards.
It's also remotely similar to Arduino in the level of abstraction. - You could go to low level programming, using a vendor provided library to initially simplify the development.
- Or you could go commando, with direct register manipulation and write your own library and drivers.
Each one of these alternative has advantages and drawbacks, my choice has been number 3, trending to 4 - but I skipped Arduino altogether (don't like Wiring, hate the IDE).
What follows holds for ST's STM32, but very similar consideration are valid for other vendors and MCUs (e.g. NXP and Kinetis/LPC)
Getting started with a Nucleo or Discovery board is very cheap and the debugger is integrated (ST-Link V2.1).
A code generator to create the skeleton of an application (CubeMX) is available, as is a free IDE (
Eclipse based - as most are, unfortunately).
Though the HAL library can be criticized under many aspects it's an easy way to start.
As for all the libraries available for Arduino, they can often be easily ported: if you are communicating with an I2C sensor or an SPI LCD display, the value added added part is the specific protocol implementation, not the primitives used to read from or write to the interface.
If you are specifically after Cortex-M0 IDE, consider that for STM32F0 and L0
Keil MDK is free.
From what I see STM32 is dirt cheap but has rather poor documentation.
Really? I find it one of the best.
Don't be scared, it's usually huge but decently organized.