e12 wrote on Tuesday, July 12, 2016:
I have question about freertos schedulings I’m using iar compiler and stm32f427
scheduling method is preemptive, I‘m using the hal library and the contents of FreeRTOSConfig.h are as follows:
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( SystemCoreClock )
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 30 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
#define configTOTAL_HEAP_SIZE ((size_t)30720)
#define configMAX_TASK_NAME_LEN ( 30 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1 // Updated 2016.06.17
#define configUSE_MUTEXES 1
#define configQUEUE_REGISTRY_SIZE 8
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_MALLOC_FAILED_HOOK 1
#define configUSE_COUNTING_SEMAPHORES 1
#define configUSE_TASK_NOTIFICATIONS 1 // Updated 2016.06.17
#define configUSE_TICKLESS_IDLE 0 // Updated 2016.06.17
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 3
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
Current Task are defined as follows:
void Task_Create(void)
{
xTaskCreate( ISS2OFP_Run_Task, "task_ISS2OFP", configMINIMAL_STACK_SIZE*2, NULL, 19, NULL );
xTaskCreate( OFP2CLAW_Run_Task, "task_OFP2CLAW", configMINIMAL_STACK_SIZE, NULL, 18, NULL );
xTaskCreate( CLAW_Run_Task, "task_CLAW", configMINIMAL_STACK_SIZE*2, NULL, 17, NULL );
xTaskCreate( CLAW2OFP_Run_Task, "task_CLAW2OFP", configMINIMAL_STACK_SIZE, NULL, 16, NULL );
xTaskCreate( OFP2GCS_Run_Task, "task_OFP2GCS", configMINIMAL_STACK_SIZE*2, NULL, 13, NULL );
xTaskCreate( SDcard_Recode_Queue_Task, "SDcard_Recode_Queue", configMINIMAL_STACK_SIZE*2, NULL, 11, NULL );
xTaskCreate( OFP2FDR_Run_Task, "task_OFP2FDR", configMINIMAL_STACK_SIZE*6, NULL, 10, NULL );
xTaskCreate( SYSTEM_Process_10ms_Task, "SYSTEM_Process_10ms", configMINIMAL_STACK_SIZE*2, NULL, 7, NULL );
xTaskCreate( SYSTEM_Process_1ms_Task, "SYSTEM_Process_1ms", configMINIMAL_STACK_SIZE*2, NULL, 6, NULL );
}
there are several task using semaphore like, ISS2OFP_Run_Task, OFP2CLAW_Run_Task, CLAW_Run_Task, CLAW2OFP_Run_Task on the other hand there are some task using vTaskDelayUntil like SDcard_Recode_Queue_Task, OFP2GCS_Run_Task, GCS2OFP_Run_Task, SYSTEM_Process_1ms_Task, SYSTEM_Process_10ms_Task
My question this, can I use vTaskDelayUntil and semaphore task at the same time?
is there any problem with scheduling?