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

FreeRTOS v10.2.1 is available for immediate download. MIT licensed, includes 64-bit RISC-V, NXP Cortex-M33 demo & Nuvoton Cortex-M23 demo.

NXP tweet showing LPC5500 (ARMv8-M Cortex-M33) running FreeRTOS.

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

Cadence Tensilica Cortes

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