I recently started moving from Arduino/Atmel 8-Bit processors to NXP/ARM 32-bit processors. It’s been a huge learning curve but it opens lots of doors for bigger and better projects.
The first set of Micro Controllers I targeted was NXP’s LPC11U14 and LPC4337. These processors run much faster the Arduino’s and they work great for multi-tasked applications.
So I decided to give Real Time Operating Systems a go. They are very similar to OS’s like Windows/Linux/OSX except they focus more on Timing than User-Interface. This is great for real time applications like motor control and time sensitive sensor networks. It is also more efficient because it utilizes more of the micro controllers processing time, taking advantage of MCU’s with higher clock speeds.
I picked FreeRTOS because it supports a large range of controllers and offer all kinds of examples like IO to Web Servers.
Two example projects using FreeRTOS:
The LPC11U14 project included a virtual Serial Port over USB with a secondary task of blinking the on-board LED at an consistent 2Hz.
https://github.com/Protoneer/LPC11U14-FreeRTOS-with-Virtual-USB-Serial-and-LEDBlinky
The LPC4330 is much bigger beast and I found it hard to get the RTOS working as there are hardly any examples available that work with my LPC4330 Xplorer board from NGX.
https://github.com/Protoneer/LPC43XX-FreeRTOS-with-2xLED-Threads
The biggest challenge was with configuring FreeRTOS to work with the specific MCU.
Hard work and interesting