portBASE_TYPE conflict definition with vtaskDelayUntil()
Hello,
I migrated from freeRTOS 7.6.0 to 8.0.0
when building the same project of a PIC32Mx using XC32 1.31 and FreeRTOS 8.0.0
I get this error everytime i use vtaskDelayUntil()
../GPS/GPS.c:488:21: warning: passing argument 1 of ‘vTaskDelayUntil’ from incompatible pointer type
../Source/include/task.h:599:6: note: expected ‘TickType_t * const’ but argument is of type ‘long int *’
But I don’t get it with FreeRTOS 7.6.0
here is my line of code
portBASETYPE xLastTimeWakeTask;
vTaskDelayUntil(&xLastTimeWakeTask, 100/portTICKRATE_MS);
the first argument (portTickType) in vtaskDelayUntil() is defined :
in 7.6.0 : typedef unsigned long portTickType;
in 8.0.0 : typedef uint32t TickTypet; and in microchip type definition i find
typedef __ uint32t uint32t;
typedef unsigned int __ uint32_t;
and this makes TickType_t an unsigned int.
I changed the definition of TickTypet to long like portBASETYPE, would that make a mess after ?
portBASE_TYPE conflict definition with vtaskDelayUntil()
In both V7.6.0 and V8.0.0 the tick type has been unsigned. Your code snipped is declaring xLastTimeWakeTask as a signed portBASE_TYPE. This has probably always been wrong in your code but not been highlighted until you switch to v8 because in v8 it is attempting an implicit conversion to a typedef.
Try building against V7.6.0 with the -Wextra compiler option. Does it generate a warning then?
Have a look at http://www.freertos.org/upgrading-to-FreeRTOS-V8.html#typedefs
portBASE_TYPE conflict definition with vtaskDelayUntil()
Thank you for the clarificaiton, I mixed between portBASE_TYPE and portTickType