Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem


FreeRTOS v 7.3.7 Timers Problem

Posted by gstenos on May 24, 2016

I was having an issue where one of my timers was never hitting its TimerCallBack function. I made that task the highest priority that the timer was tied to, still nothing would work. Even though it had the highest priority, it would not execute. I changed all timer values to make sure none would ever be released at the same time, the timer would still never hit its TimerCallBack function.

I verified with xTimerIsTimerActive that the timer was never active, it was being created exactly the same as all the other timers save its name and interval, I would check it with configAssert just like all the other timers, no errors or anything that seemed out of place.

timera = xTimerCreate((const signed char * const) "TIMERA",100/portTICKRATEMS,pdTRUE,NULL,TA_TimerCallback);


The main difference is that it is the last timer to be started. Out of curiosity and to make sure I covered all angles, I put it as the first timer to be started, and as luck would have it, it was working all of a sudden. However, now the other timer that is started last does not work, does not matter which timer it is, the last timer is never started.

xTimerStart(timera, 0); xTimerStart(timerb, 0); xTimerStart(timerc, 0); xTimerStart(timerd, 0); xTimerStart(timere, 0); xTimerStart(timerf, 0); <----Will never be active once the scheduler starts


I have 6 timers in total in this project, all 6 have their own TimerCallBack functions.I've also had all timers use the same TimerCallBack function.

I know I do not have too many timers or else I would receive an error message regarding memory issues. This is the first time I've had more than 5 timers running, the error has not appeared before. Is there by chance a crucial step I am missing that would make the last timer not activate properly?

FreeRTOS v 7.3.7 Timers Problem

Posted by richard_damon on May 25, 2016

The timer functionality uses a queue to send the information to the timer task. You are likely filling that queue, and since this is before the scheduler is running, the task can't take the data from the queue. (Note, you are not checking the return status from the xTimerStart calls). The Create worked, but the Start didn't.

I think there may be a parameter you can add/adjust if FreeRTOSConfig.h, or you can move the xTimerStart calls to the beginning of some task that starts with the system.

FreeRTOS v 7.3.7 Timers Problem

Posted by rtel on May 25, 2016

A couple of links in support of Richard D's post:

http://www.freertos.org/RTOS-software-timer-service-daemon-task.html http://www.freertos.org/a00110.html#configTIMERQUEUELENGTH

FreeRTOS v 7.3.7 Timers Problem

Posted by gstenos on May 25, 2016

Thank you Richard for your advice and to the support team for the links. Not sure how I missed this parameter when I was setting everything up initially. Everything is up and running now as intended.

[ Back to the top ]    [ About FreeRTOS ]    [ Privacy ]    [ Sitemap ]    [ ]

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS v10.2.1 is available for immediate download. MIT licensed, includes 64-bit RISC-V, NXP Cortex-M33 demo & Nuvoton Cortex-M23 demo.

NXP tweet showing LPC5500 (ARMv8-M Cortex-M33) running FreeRTOS.

View a recording of the "OTA Update Security and Reliability" webinar, presented by TI and AWS.


FreeRTOS and other embedded software careers at AWS.

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Cadence Tensilica Cortes

Espressif ESP32

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers





STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS

Xilinx Microblaze and Zynq partner