QueueHandle_t xQueue; /* Function to create a queue and post some values. */ void vAFunction( void *pvParameters ) { char cValueToPost; const TickType_t xTicksToWait = ( TickType_t )0xff; /* Create a queue capable of containing 10 characters. */ xQueue = xQueueCreate( 10, sizeof( char ) ); if( xQueue == 0 ) { /* Failed to create the queue. */ } /* ... */ /* Post some characters that will be used within an ISR. If the queue is full then this task will block for xTicksToWait ticks. */ cValueToPost = 'a'; xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait ); cValueToPost = 'b'; xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait ); /* ... keep posting characters ... this task may block when the queue becomes full. */ cValueToPost = 'c'; xQueueSend( xQueue, ( void * ) &cValueToPost, xTicksToWait ); } /* ISR that outputs all the characters received on the queue. */ void vISR_Routine( void ) { BaseType_t xTaskWokenByReceive = pdFALSE; char cRxedChar; while( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) ) { /* A character was received. Output the character now. */ vOutputCharacter( cRxedChar ); /* If removing the character from the queue woke the task that was posting onto the queue xTaskWokenByReceive will have been set to pdTRUE. No matter how many times this loop iterates only one task will be woken. */ } if( xTaskWokenByReceive != pdFALSE ) { /* We should switch context so the ISR returns to a different task. NOTE: How this is done depends on the port you are using. Check the documentation and examples for your port. */ taskYIELD (); } }
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|
Latest News
NXP tweet showing LPC5500 (ARMv8-M Cortex-M33) running FreeRTOS. Meet Richard Barry and learn about running FreeRTOS on RISC-V at FOSDEM 2019 Version 10.1.1 of the FreeRTOS kernel is available for immediate download. MIT licensed. View a recording of the "OTA Update Security and Reliability" webinar, presented by TI and AWS. Careers
FreeRTOS and other embedded software careers at AWS. FreeRTOS Partners
|