Some time ago it was quite obvious which microcontroller you had to pick for your next project. For low cost and slower applications you simply selected 8-bit micro. When design needed to do intense processing you most likely had to go with ARM or other solution. Today situation is a bit different. Sometimes you are in situation when lowest end ARM microcontroller is way cheaper than 8-bit micro and it still offers several times better performance. And final decisions sometimes are driven by loyalty, experience or ecosystem. Lets not get in to that kind of discussion. Every microcontroller family has to offer something unique that looks attractive in particular situations.
ARM Cortex microcontrollers have great position right now because they have something to offer all embedded hardware niches. Lets take a quick look at two development boards from STM where one carry ARM Cortex-M0 and another ARM Cortex-M4F microcontroller. You can get both discovery boards from Newark really cheap.
The first one is called STM32F0Discovery, The name already says that it is based on ARM Cortex-M0 microcontroller STM32F051R8T6. It has internal 64KB flash memory, 8KB of RAM. It can be clocked at 48MHz speed. The board itself has standard ST-LINK/V2 programmer debugger. It powers from USB or it can be externally powered from 5V or 3V power supply. There are couple push buttons – one of them is reset. Couple user programmable LEDs. And of course there are all 64 I/Os of chip available on header.
Now lets look at another extreme – STM32F4Discovery kit.
It is equipped with ARM Cortex-M4F microcontroller featuring 1MB of Flash memory, 196 RAM. Clock source can be raised up to 168MHz. On board there are: same ST-LINK debugger/programmer as on previous, programmable button, 4 LEDs and all I/Os. But to test processors abilities there are several other features included. First of these is 3-axis digital accelerometer. Then there is MEMS microphone and D class amplifier powered DAC. And finally there is an USB OTG micro-AB connector.
As you can see there is quite a difference on board. But more fun lies on Core of processor. So what is there on Cortex-M4 and isn’t on Cortex-M0? STM32F0 microcontroller has smaller instruction set what leads to smaller size, lower power and low cost. Cortex-M0 has no advanced core features that are found on Cortex-M4F but is enough to run most of applications. For instance you won’t find hardware divide functionality, bit-banding or memory protection unit (MPU). In other hand microcontroller in STM32F4Discovry has practically most features of Cortex-M family you could expect. On top of this it adds Floating point module, DSP functions what makes it great for signal processing and other intense tasks. Also it features wider array of peripherals and connectivity modules like several USARTs, I2C, SPI or USB OTG.
If you are learning ARM Cortex and started with M0 family. There is no problem to move towards more advanced microcontroller like Cortex-M4. All your previous programs will work fine due to core compatibility. I suggest to start with simple and then move on to more complex. This way you won’t get too excited with features and power.