I have a couple of the STM32F4 Discovery boards – they are cheap (£10 from Farnell) to the point of being free and pack an amazing amount of power into the demo board. It also comes with some useful peripherals like an accelerometer and audio CODEC. Possibly the most awesome thing about the F4 is the floating point unit (FPU). Being able to natively do floating point in the same amount of time it takes to do fixed point just moves these things from being pretty nice to rocket science. No more messing around with fixed point saturation and scaling issues…And algorithms can be seamlessly copied from desktop to DSP..
ARMs are quite a step up from the 8/16 bit microcontrollers that I have been using previously. Although ARMs are impressive, I don’t think they are going to entirely replace the lower end PIC and AVRs, mainly because of power consumption, which is a big deal for sensor networks. However, the whole power consumption thing is contentious, because it is not always easy to do a 1:1 comparison, and if you rely on vendor’s advertisements, you are going to be none the wiser.
Although the Discovery board comes with a lot of sample code, both for a demo application and also peripherals, the learning curve is just a lot steeper than other micros where you can just dive in and have something working quite quickly. There is a lot to do in terms of setting up registers and configuring pins/ports and clocks before it does anything useful. I have posted some short code snippets that illustrate some basic features of the device, such as PWM, USART and timers.
One gripe I have is the lack of decent tools for development in Ubuntu. I don’t see in this day and age of Android, iOS, linux etc, why tools should be constrained to Windows. Windows is just about the worst development environment I could think of. Nonetheless, for the sake of getting up and running with the STM32F4, I buckled and installed IAR kickstarter, which gives you 32kB free. I tried Atollic, but I didn’t like it so much. I also have an eclipse setup running on ubuntu – I can get it to debug and program, but its a bit flakey at the moment…
Anyway, enough talking, on to the content