The error say that the task function being passed at this point is taking two parameters, both of which are pointer to void. This is the wrong signature. A task function needs to have exactly 1 parameter, of type pointer to void.
Check carefully the function, and its signature, on the line being flaged as an error.
The void * parameter allows you to send whatever you want - but it has to be a single parameter. If you want to send multiple parameters then place the parameters in a structure and send a pointer to the structure. Here is an example from one of the standard demo tasks:
/* Structure used to pass parameters to each task. */
typedef struct SEMAPHORE_PARAMETERS
{
xSemaphoreHandle xSemaphore;
volatile unsigned long *pulSharedVariable;
portTickType xBlockTime;
} xSemaphoreParameters;
/* Create the structure used to pass parameters to the first two tasks. */
pxFirstSemaphoreParameters = pvPortMalloc( sizeof( xSemaphoreParameters ) );
if( pxFirstSemaphoreParameters != NULL )
{
/* Create the semaphore used by the first two tasks. */
vSemaphoreCreateBinary( pxFirstSemaphoreParameters->xSemaphore );
if( pxFirstSemaphoreParameters->xSemaphore != NULL )
{
/* Create the variable which is to be shared by the first two tasks. */
pxFirstSemaphoreParameters->pulSharedVariable =
( unsigned long * ) pvPortMalloc( sizeof( unsigned long ) );
/* Initialise the share variable to the value the tasks expect. */
*( pxFirstSemaphoreParameters->pulSharedVariable ) =
semtstNON_BLOCKING_EXPECTED_VALUE;
/* The first two tasks do not block on semaphore calls. */
pxFirstSemaphoreParameters->xBlockTime = ( portTickType ) 0;
/* Spawn the first two tasks. As they poll they operate at the idle
priority. */
xTaskCreate( prvSemaphoreTest,
( signed char * ) "PolSEM1",
semtstSTACK_SIZE, ( void * )
pxFirstSemaphoreParameters,
tskIDLE_PRIORITY,
( xTaskHandle * ) NULL );
}
}
Regards.