Port of FreeRTOS to libopencm3 STM32F103

FreeRTOS is a popular open source real time operating system for microcontrollers that has been ported for use with a very large number of devices and development systems. This miniproject adapts the CORTEX_STM32F103_Primer_GCC demo to the libopencm3 environment used in many of the ARM projects on this site.

The only significant change to make is to redirect the sv, pendsv and systick
libopencm3 interrupt handlers to those used by FreeRTOS:

void sv_call_handler(void)
{
      vPortSVCHandler();
}
 void pend_sv_handler(void)
{
      xPortPendSVHandler();
}
void sys_tick_handler(void)
{
      xPortSysTickHandler();
}

The Makefile must include the GCC/ARM_CM3 directory to incorporate appropriate code for the various handlers, systick, interrupts and other needed functionality common to this class of microcontroller. This code is common to ARM Cortex M3 devices.

Other than making use of libopencm3 for initialising and using hardware resources, code should then be transportable between devices.

FreeRTOS has been used in the power management project on STM32F103.

First created 30 August 2013
Last Modified 1 September 2013
Ken Sarkies 2013