Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem


take & give semaphore

Posted by Martin Velek on December 11, 2008

is there a simple way, how to achieve this functionality?

void interrupt_handler_timer_A(void)

void TaskA(...)
exit(1); // we should never get here


I mean that the interrupt handler can give semaphore only if was taken before. In other cases it skips it.

Thank you for help


RE: take & give semaphore

Posted by Richard on December 12, 2008
You could do something like this:

if( xQueueIsQueueEmptyFromISR( (xQueueHandle) xSemaphore )
____xSemaphoreGiveFromISR( xSemaphore );

be careful of race conditions though.

I don't understand the comment "// we should never get here" in your sample task code. It looks like you would get there as soon as the semaphore was available.


RE: take & give semaphore

Posted by Martin Velek on December 12, 2008
Hi Richard,

thank you for answer. The comment "// we should never get here" means, that by function stopTimerA() disables generating Timer interrupt.

Amazing function xQueueIsQueueEmptyFromISR. Exactly what I need. I didn't find it in documentation :( ... I would be glad if something like MicroC/OS-II was written about FRT.


[ Back to the top ]    [ About FreeRTOS ]    [ Privacy ]    [ Sitemap ]    [ ]

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

Version 10.1.0 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.


FreeRTOS and other embedded software careers at AWS.

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Espressif ESP32

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers


STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS

Xilinx Microblaze and Zynq partner