STM32L-DISCOVERY port

droolyone wrote on Monday, June 13, 2011:

I just ported FreeRTOS 7 to the STM32L-DISCOVERY board using Atollic TRUESTUDIO Lite.  Considering that this was my first port, it was relatively straight forward with the with one exception.  I created a new C project and just added the FreeRTOS directory. Once the proper includes and sources directories were linked, the project built clean. I had to modify startup_stm32l1xx_md.s  to include xportSVCHandler, xPortPendSVCHandler, and xPortSysTickHandler.

At this point FreeRTOS was running but very slowly. The vTaskDelay function was off by an order of magnitude. After a lot of fiddling around, I discovered that the SysSysClock function was failing to properly configure the system clock.  It turns out that the system_stm32l1xx.c file that Atollic uses for the STM32L-DISCOVERY is not correct. The file tries to configure HSE but the STM32L-DISCOVERY board does not have the external oscillator installed.  I just grabbed the system_stm32l1xx.c file from the STM demo project. It worked like a charm.

I hope this might help others who try porting to the STM32L-DISCOVERY.  Now I just have to port all the cool features of the demo app to be thread safe under FreeRTOS.

rtel wrote on Monday, June 13, 2011:

Second attempt at posting - as the first seemed to disappear.

FreeRTOS contains an official demo for the discovery board that uses the Atollic tools.  The documentation page is here:
http://www.freertos.org/FreeRTOS-for-Cortex-M3-STM32-STM32F100-Discovery.html

I do not recall having any difficulties with the clock speed, but have pinged Atollilc support just in case.

Regards.

droolyone wrote on Monday, June 13, 2011:

This clock problem is on the STM32L-DISCOVERY not the STM32VL-DISCOVERY pointed to by your link. The STM32L has a small LCD and touch Sensor on board. The problem is that it lacks an external oscillator for the STM32L152RBT chip, therefore it must be configured to use HSI rather than HSE.