I use FreeRTOS for a microcontroller device, and now want to simulate FreeRTOS on Ubuntu to run Ceedling tests.
Starting timer with a callback gives me either a lot of callbacks if timer period == 200 msec, or zero callbacks, if timer period == 2000 msec for a period of 5 seconds
static void test_timer_callback(TimerHandle_t xTimer) {
printf("test_timer_callback \n");
}
...
test_timer = xTimerCreate("test_timer", pdMS_TO_TICKS(2000), pdTRUE, (void *)0,
test_timer_callback); //2000 - zero callbacks, 200 msec - a LOT of callbacks
xTimerStart(test_timer, pdMS_TO_TICKS(10));
Also, when I call xTimerStop function - the function contains xTimerStop fall without any errors
I use FreeRTOSConfig.h file from blinky example
#define configUSE_PREEMPTION 1
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configUSE_DAEMON_TASK_STARTUP_HOOK 0
#define configTICK_RATE_HZ ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 65 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 12 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
#define configUSE_MUTEXES 1
#define configCHECK_FOR_STACK_OVERFLOW 0
#define configUSE_RECURSIVE_MUTEXES 1
#define configQUEUE_REGISTRY_SIZE 20
#define configUSE_APPLICATION_TASK_TAG 1
#define configUSE_COUNTING_SEMAPHORES 1
#define configUSE_ALTERNATIVE_API 0
#define configUSE_QUEUE_SETS 1
#define configUSE_TASK_NOTIFICATIONS 1
#define configSUPPORT_DYNAMIC_ALLOCATION 1
/* Software timer related configuration options. The maximum possible task
* priority is configMAX_PRIORITIES - 1. The priority of the timer task is
* deliberately set higher to ensure it is correctly capped back to
* configMAX_PRIORITIES - 1. */
#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
#define configTIMER_QUEUE_LENGTH 20
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 )
Hey,
I have tried the timers with both 200ms and 2000ms and they look fine to me.
I used the default config file from the posix port and also modified it to match the one you posted
the only difference is:
[Posix_GCC]$ ./build/posix_demo
Trace started.
The trace will be dumped to disk if a call to configASSERT() fails.
Starting echo blinky demo
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
test_timer_callback
Message received from software timer
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
test_timer_callback
Message received from software timer
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
test_timer_callback
Message received from software timer
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
test_timer_callback
Message received from software timer
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
test_timer_callback
Message received from software timer
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
Message received from task
test_timer_callback
Message received from software timer
Message received from task
Message received from task
Message received from task
With 200 ms
[Posix_GCC]$ ./build/posix_demo
Trace started.
The trace will be dumped to disk if a call to configASSERT() fails.
Starting echo blinky demo
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from software timer
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from software timer
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
test_timer_callback
Message received from task
My guess is that you are doing something that is not shown in the fragment you have posted.