Quality RTOS & Embedded Software

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


Handling interrupt

Posted by pebemspn on March 15, 2015


I want to have ISR which is out of freeRTOS scope (not handled by rtos - interrupt whose priority level is greater than configMAXSYSCALLINTERRUPT_PRIORITY), I sync it with a task in rtos. Since I do computation (math/filtering) within this ISR on periodic base I need to keep ISR variables over time. My ISR is high frequency rate ISR.

My question is what/how variable should I use (local,static,global)? What is the limitation on variable use for this ISR which is out of rtos?

Under preemptive scheduling do I have either time different stack?

Thank you. peb

Handling interrupt

Posted by rtel on March 15, 2015

This is a C question, not a FreeRTOS question.

In C a variable declared as a local variable inside a function will be allocated to either the stack, or a register. In either case the value of the variable will not persist across calls to the function - no matter if that function is executed in an interrupt or not.

If the variable is declared inside the function as a static variable, then it will not be on the stack and its value will persist across calls to the function. Likewise if the variable is global it will always be accessible and its value will not change unless changed by your code.


Handling interrupt

Posted by pebemspn on March 17, 2015

Thank you for your answer, what you wrote is quite understandable. I am starting to use rtos so questions are quite entry level.

My ISR is out of freeRTOS, I use local variables there and if there is a preemptive scheduler which switch stacks per task, does it affect my local ISR variables? The ISR local variables is allocated on stack, so which particular one if each task his its own stack?

Thank you.

Handling interrupt

Posted by rtel on March 17, 2015

Tasks are software controlled and interrupts are a feature of the hardware - a task can never preempt an interrupt, but an interrupt can preempt a task - so you do not need to worry about a task switch interfering with the stack of an interrupt.


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

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.


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