avitaliy66 (15.08.2005 10:56, просмотров: 1991)
Ответ: FreeRTOS задачи выполняютяс только с одинаковым приоритетом ? :-( Это исходник (кусок DEMO FreeRTOS, см. ниже), который работал прекрасно на LPC2138. Компилировался при помощи GNUARM.
Но как только я изменяю приоритет(tskIDLE_PRIORITY+1) одной задачи
xTaskCreate( vMessage_0, ( const signed portCHAR * const )"Message_0", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL ),
то похоже, что другая задача "Message_1" останавливается.
В любом случае я только вижу "Message_0" сообщения.
Что-то странное :-(
Пожалуйста подскажите в чем может быть дело.
Спасибо
Виталий
/*-----------------------------------------------------------*/
static void vMessage_0( void *pvParameters );
static void vMessage_1( void *pvParameters );
/*-----------------------------------------------------------*/
int main( void )
{
/* Setup the hardware */
Initialize();
/* Start the Message tasks - which are defined in this file. */
xTaskCreate( vMessage_0, ( const signed portCHAR * const )"Message_0", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
xTaskCreate( vMessage_1, ( const signed portCHAR * const )"Message_1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
/* Now all the tasks have been started - start the scheduler. */
vTaskStartScheduler();
/* Should never reach here! */
return 0;
}
/*-----------------------------------------------------------*/
//
static void vMessage_0( void *pvParameters )
{
long temp;
/* The parameters are not used in this function. */
( void ) pvParameters;
for (;;)
{
taskENTER_CRITICAL();
uart0Puts("\n\r Message_0");
taskEXIT_CRITICAL();
for(temp =0; temp < 2000000;temp++);
}
}
//
static void vMessage_1( void *pvParameters )
{
long temp;
/* The parameters are not used in this function. */
( void ) pvParameters;
for (;;)
{
taskENTER_CRITICAL();
uart0Puts("\n\r Message_1");
taskEXIT_CRITICAL();
for(temp =0; temp < 2000000;temp++);
}
}