| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- .. _hooks_api_reference:
- FreeRTOS Hooks
- ==============
- Overview
- --------
- FreeRTOS consists of Idle Hooks and Tick Hooks which allow for application
- specific funtiionality to be added to the Idle Task and Tick Interrupt. The
- ESP32 is dual core in nature, hence the ESP-IDF provides its own Idle and Tick
- Hooks that are dual core compatible in addition to the hooks provided by Vanilla
- FreeRTOS.
- Vanilla FreeRTOS Hooks
- ----------------------
- Idle and Tick Hooks in vanilla FreeRTOS are implemented by defining
- implementations for the functions ``vApplicationIdleHook`` and
- ``vApplicationTickHook`` respectively somewhere in the application. Vanilla
- FreeRTOS will run the user defined Idle Hook every iteration of the Idle Task,
- whereas the user defined Tick Hook will run once per tick interrupt (given that
- there are no pended ticks).
- Due to vanilla FreeRTOS being designed for single core, ``vApplicationIdleHook``
- and ``vApplicationTickHook`` will be run in both cores on the ESP32. In
- other words, the same Idle Hook and Tick Hook are used for both cores.
- To enable the vanilla FreeRTOS hooks in ESP-IDF, :ref:`CONFIG_FREERTOS_LEGACY_HOOKS`
- must be enabled in ``make menuconfig``. :ref:`CONFIG_FREERTOS_LEGACY_IDLE_HOOK`
- and :ref:`CONFIG_FREERTOS_LEGACY_TICK_HOOK` should also be enabled.
- ESP-IDF Idle and Tick Hooks
- ---------------------------
- Due to the dual core nature of the ESP32, it may be necessary for some
- applications to have seperate Idle Hooks for each core. Furthermore, it may
- be necessary for Idle and Tick Hooks to have execute multiple functionalities
- that are configurable at run time. Therefore the ESP-IDF provides it's own Idle
- and Tick Hooks in addition to the hooks provided by Vanilla FreeRTOS.
- The ESP-IDF Hooks do not operate in the same way as Vanilla FreeRTOS Hooks
- where users provide a definition for each of the hooks. Instead, the ESP-IDF
- Hooks are predefined to call a list of user registered callbacks specific to
- each core. Users can register and deregister callbacks which are run on the
- Idle or Tick Hook of a specific core.
- API Reference
- -------------
- .. include:: /_build/inc/esp_freertos_hooks.inc
|