<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tick Hook FreeRTOS - MCU &amp; FPGA</title>
	<atom:link href="https://mcu.tec.br/tags/tick-hook-freertos/feed/" rel="self" type="application/rss+xml" />
	<link>https://mcu.tec.br</link>
	<description>Microcontroladores &#38; FPGA</description>
	<lastBuildDate>Tue, 06 Jan 2026 22:48:37 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mcu.tec.br/wp-content/uploads/2025/02/Robo-para-o-site-MCU.tec_.br-512x512-1-150x150.png</url>
	<title>Tick Hook FreeRTOS - MCU &amp; FPGA</title>
	<link>https://mcu.tec.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Idle Task, Hook Functions e Low Power no FreeRTOS: Guia Completo para Sistemas Embarcados Eficientes</title>
		<link>https://mcu.tec.br/rtos/idle-task-hook-functions-e-low-power-no-freertos-guia-completo-para-sistemas-embarcados-eficientes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=idle-task-hook-functions-e-low-power-no-freertos-guia-completo-para-sistemas-embarcados-eficientes</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 20:33:54 +0000</pubDate>
				<category><![CDATA[RTOS]]></category>
		<category><![CDATA[freertos]]></category>
		<category><![CDATA[FreeRTOS consumo de energia]]></category>
		<category><![CDATA[freeRTOS cortex-m]]></category>
		<category><![CDATA[FreeRTOS power management]]></category>
		<category><![CDATA[FreeRTOS STM32]]></category>
		<category><![CDATA[gerenciamento de energia em RTOS]]></category>
		<category><![CDATA[Idle Hook FreeRTOS]]></category>
		<category><![CDATA[Idle Task FreeRTOS]]></category>
		<category><![CDATA[Low Power FreeRTOS]]></category>
		<category><![CDATA[RTOS low power]]></category>
		<category><![CDATA[sistemas embarcados baixo consumo]]></category>
		<category><![CDATA[Tick Hook FreeRTOS]]></category>
		<category><![CDATA[Tickless Idle FreeRTOS]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1028</guid>

					<description><![CDATA[<p>Neste artigo técnico e didático, exploramos em profundidade como o FreeRTOS gerencia períodos de ociosidade e consumo de energia por meio da Idle Task, das Hook Functions e dos mecanismos de Low Power, incluindo o Tickless Idle. O texto apresenta uma visão arquitetural clara sobre o papel da Idle Task no kernel, explicando por que ela é essencial para a integridade do sistema e quais são as restrições corretas de uso. Em seguida, detalha o funcionamento das Hook Functions, com foco especial na Idle Hook e na Tick Hook, comparando seus contextos de execução, limitações e aplicações práticas. O artigo avança para uma análise completa das estratégias de baixo consumo no FreeRTOS, mostrando como o Tickless Idle permite suspender o tick do sistema e reduzir drasticamente o consumo energético sem perder precisão temporal. São apresentados exemplos de código em C, padrões de implementação para microcontroladores Cortex-M e STM32, além de boas práticas, erros comuns e critérios objetivos para decidir entre abordagens simples e soluções completas de gerenciamento de energia. Este conteúdo é ideal para desenvolvedores de firmware, engenheiros de sistemas embarcados e profissionais que desejam projetar aplicações robustas, previsíveis e energeticamente eficientes com FreeRTOS.</p>
<p>The post <a href="https://mcu.tec.br/rtos/idle-task-hook-functions-e-low-power-no-freertos-guia-completo-para-sistemas-embarcados-eficientes/">Idle Task, Hook Functions e Low Power no FreeRTOS: Guia Completo para Sistemas Embarcados Eficientes</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-hiv2o wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-hiv2o "><div class="eb-toc-container eb-toc-hiv2o  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;Vis\u00e3o Geral: Idle Task, Hook Functions e Low Power no FreeRTOS&quot;,&quot;text&quot;:&quot;Vis\u00e3o Geral: Idle Task, Hook Functions e Low Power no FreeRTOS&quot;,&quot;link&quot;:&quot;eb-table-content-0&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso.Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso&quot;,&quot;text&quot;:&quot;Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso.Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso&quot;,&quot;link&quot;:&quot;idle-task-no-freertos-papel-ciclo-de-vida-e-regras-de-usoidle-task-no-freertos-papel-ciclo-de-vida-e-regras-de-uso&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Idle Hook (vApplicationIdleHook): extens\u00e3o segura do comportamento da Idle Task&quot;,&quot;text&quot;:&quot;Idle Hook (vApplicationIdleHook): extens\u00e3o segura do comportamento da Idle Task&quot;,&quot;link&quot;:&quot;eb-table-content-2&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Hook Functions no FreeRTOS: Idle Hook vs Tick Hook&quot;,&quot;text&quot;:&quot;Hook Functions no FreeRTOS: Idle Hook vs Tick Hook&quot;,&quot;link&quot;:&quot;hook-functions-no-freertos-idle-hook-vs-tick-hook&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Low Power no FreeRTOS e o conceito de Tickless Idle&quot;,&quot;text&quot;:&quot;Low Power no FreeRTOS e o conceito de Tickless Idle&quot;,&quot;link&quot;:&quot;low-power-no-freertos-e-o-conceito-de-tickless-idle&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Implementa\u00e7\u00e3o pr\u00e1tica de Low Power no FreeRTOS (STM32 e Cortex-M)&quot;,&quot;text&quot;:&quot;Implementa\u00e7\u00e3o pr\u00e1tica de Low Power no FreeRTOS (STM32 e Cortex-M)&quot;,&quot;link&quot;:&quot;eb-table-content-5&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;1. Modelo mental correto: o kernel decide, o port executa&quot;,&quot;text&quot;:&quot;1. Modelo mental correto: o kernel decide, o port executa&quot;,&quot;link&quot;:&quot;1-modelo-mental-correto-o-kernel-decide-o-port-executa&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;2. Exemplo realista: STM32 + FreeRTOS + Sleep Mode&quot;,&quot;text&quot;:&quot;2. Exemplo realista: STM32 + FreeRTOS + Sleep Mode&quot;,&quot;link&quot;:&quot;2-exemplo-realista-stm32-freertos-sleep-mode&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;3. Stop Mode: quando o consumo precisa ser agressivamente reduzido&quot;,&quot;text&quot;:&quot;3. Stop Mode: quando o consumo precisa ser agressivamente reduzido&quot;,&quot;link&quot;:&quot;3-stop-mode-quando-o-consumo-precisa-ser-agressivamente-reduzido&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;4. Rela\u00e7\u00e3o entre Idle Hook e Tickless Idle&quot;,&quot;text&quot;:&quot;4. Rela\u00e7\u00e3o entre Idle Hook e Tickless Idle&quot;,&quot;link&quot;:&quot;eb-table-content-9&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;5. Erros cl\u00e1ssicos que quebram o Low Power&quot;,&quot;text&quot;:&quot;5. Erros cl\u00e1ssicos que quebram o Low Power&quot;,&quot;link&quot;:&quot;eb-table-content-10&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;6. Padr\u00e3o recomendado de arquitetura&quot;,&quot;text&quot;:&quot;6. Padr\u00e3o recomendado de arquitetura&quot;,&quot;link&quot;:&quot;eb-table-content-11&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot; Boas pr\u00e1ticas, checklist e crit\u00e9rios de decis\u00e3o&quot;,&quot;text&quot;:&quot; Boas pr\u00e1ticas, checklist e crit\u00e9rios de decis\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-12&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;1. Boas pr\u00e1ticas consolidadas&quot;,&quot;text&quot;:&quot;1. Boas pr\u00e1ticas consolidadas&quot;,&quot;link&quot;:&quot;eb-table-content-13&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;2. Checklist t\u00e9cnico para projetos FreeRTOS&quot;,&quot;text&quot;:&quot;2. Checklist t\u00e9cnico para projetos FreeRTOS&quot;,&quot;link&quot;:&quot;eb-table-content-14&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;3. Crit\u00e9rios de decis\u00e3o: Idle Hook vs Tickless Idle&quot;,&quot;text&quot;:&quot;3. Crit\u00e9rios de decis\u00e3o: Idle Hook vs Tickless Idle&quot;,&quot;link&quot;:&quot;eb-table-content-15&quot;},{&quot;level&quot;:4,&quot;content&quot;:&quot;4. S\u00edntese arquitetural&quot;,&quot;text&quot;:&quot;4. S\u00edntese arquitetural&quot;,&quot;link&quot;:&quot;eb-table-content-16&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;Vis\u00e3o Geral: Idle Task, Hook Functions e Low Power no FreeRTOS&quot;,&quot;value&quot;:&quot;vis\u00e3o-geral-idle-task-hook-functions-e-low-power-no-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso.Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso&quot;,&quot;value&quot;:&quot;idle-task-no-freertos-papel-ciclo-de-vida-e-regras-de-usoidle-task-no-freertos-papel-ciclo-de-vida-e-regras-de-uso&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Idle Hook (vApplicationIdleHook): extens\u00e3o segura do comportamento da Idle Task&quot;,&quot;value&quot;:&quot;idle-hook-vapplicationidlehook-extens\u00e3o-segura-do-comportamento-da-idle-task&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Hook Functions no FreeRTOS: Idle Hook vs Tick Hook&quot;,&quot;value&quot;:&quot;hook-functions-no-freertos-idle-hook-vs-tick-hook&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Low Power no FreeRTOS e o conceito de Tickless Idle&quot;,&quot;value&quot;:&quot;low-power-no-freertos-e-o-conceito-de-tickless-idle&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Implementa\u00e7\u00e3o pr\u00e1tica de Low Power no FreeRTOS (STM32 e Cortex-M)&quot;,&quot;value&quot;:&quot;implementa\u00e7\u00e3o-pr\u00e1tica-de-low-power-no-freertos-stm32-e-cortex-m&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;1. Modelo mental correto: o kernel decide, o port executa&quot;,&quot;value&quot;:&quot;1-modelo-mental-correto-o-kernel-decide-o-port-executa&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2. Exemplo realista: STM32 + FreeRTOS + Sleep Mode&quot;,&quot;value&quot;:&quot;2-exemplo-realista-stm32-freertos-sleep-mode&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;3. Stop Mode: quando o consumo precisa ser agressivamente reduzido&quot;,&quot;value&quot;:&quot;3-stop-mode-quando-o-consumo-precisa-ser-agressivamente-reduzido&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4. Rela\u00e7\u00e3o entre Idle Hook e Tickless Idle&quot;,&quot;value&quot;:&quot;4-rela\u00e7\u00e3o-entre-idle-hook-e-tickless-idle&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;5. Erros cl\u00e1ssicos que quebram o Low Power&quot;,&quot;value&quot;:&quot;5-erros-cl\u00e1ssicos-que-quebram-o-low-power&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;6. Padr\u00e3o recomendado de arquitetura&quot;,&quot;value&quot;:&quot;6-padr\u00e3o-recomendado-de-arquitetura&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot; Boas pr\u00e1ticas, checklist e crit\u00e9rios de decis\u00e3o&quot;,&quot;value&quot;:&quot;boas-pr\u00e1ticas-checklist-e-crit\u00e9rios-de-decis\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;1. Boas pr\u00e1ticas consolidadas&quot;,&quot;value&quot;:&quot;1-boas-pr\u00e1ticas-consolidadas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2. Checklist t\u00e9cnico para projetos FreeRTOS&quot;,&quot;value&quot;:&quot;2-checklist-t\u00e9cnico-para-projetos-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;3. Crit\u00e9rios de decis\u00e3o: Idle Hook vs Tickless Idle&quot;,&quot;value&quot;:&quot;3-crit\u00e9rios-de-decis\u00e3o-idle-hook-vs-tickless-idle&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;4. S\u00edntese arquitetural&quot;,&quot;value&quot;:&quot;4-s\u00edntese-arquitetural&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#eb-table-content-0">Visão Geral: Idle Task, Hook Functions e Low Power no FreeRTOS</a><li><a href="#idle-task-no-freertos-papel-ciclo-de-vida-e-regras-de-usoidle-task-no-freertos-papel-ciclo-de-vida-e-regras-de-uso">Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso.Idle Task no FreeRTOS: papel, ciclo de vida e regras de uso</a><li><a href="#eb-table-content-2">Idle Hook (vApplicationIdleHook): extensão segura do comportamento da Idle Task</a><li><a href="#hook-functions-no-freertos-idle-hook-vs-tick-hook">Hook Functions no FreeRTOS: Idle Hook vs Tick Hook</a><li><a href="#low-power-no-freertos-e-o-conceito-de-tickless-idle">Low Power no FreeRTOS e o conceito de Tickless Idle</a><ul class="eb-toc__list"><li><a href="#eb-table-content-5">Implementação prática de Low Power no FreeRTOS (STM32 e Cortex-M)</a><ul class="eb-toc__list"><li><a href="#1-modelo-mental-correto-o-kernel-decide-o-port-executa">1. Modelo mental correto: o kernel decide, o port executa</a><li><a href="#2-exemplo-realista-stm32-freertos-sleep-mode">2. Exemplo realista: STM32 + FreeRTOS + Sleep Mode</a><li><a href="#3-stop-mode-quando-o-consumo-precisa-ser-agressivamente-reduzido">3. Stop Mode: quando o consumo precisa ser agressivamente reduzido</a><li><a href="#eb-table-content-9">4. Relação entre Idle Hook e Tickless Idle</a><li><a href="#eb-table-content-10">5. Erros clássicos que quebram o Low Power</a><li><a href="#eb-table-content-11">6. Padrão recomendado de arquitetura</a></li></ul></li></ul><li><a href="#eb-table-content-12"> Boas práticas, checklist e critérios de decisão</a><ul class="eb-toc__list"><li><a href="#eb-table-content-13">1. Boas práticas consolidadas</a><li><a href="#eb-table-content-14">2. Checklist técnico para projetos FreeRTOS</a><li><a href="#eb-table-content-15">3. Critérios de decisão: Idle Hook vs Tickless Idle</a><li><a href="#eb-table-content-16">4. Síntese arquitetural</a></li></ul></ul></div></div></div></div></div>


<h2 class="wp-block-heading"><strong>Visão Geral: Idle Task, Hook Functions e Low Power no FreeRTOS</strong></h2>



<p class="wp-block-paragraph">Nesta seção introdutória vamos estabelecer o <strong>contexto conceitual</strong> que conecta três elementos fundamentais do FreeRTOS: a <strong>Idle Task</strong>, as <strong>Hook Functions</strong> associadas a ela e os <strong>mecanismos de baixo consumo de energia (Low Power)</strong>. Esses três tópicos formam um <strong>tripé arquitetural</strong> que influencia diretamente o desempenho, a previsibilidade temporal e a eficiência energética de sistemas embarcados baseados em RTOS, especialmente em microcontroladores Cortex-M, RISC-V e similares.</p>



<p class="wp-block-paragraph">No FreeRTOS, a <strong>Idle Task</strong> é uma tarefa criada automaticamente pelo kernel, com a <strong>menor prioridade possível</strong>. Sua função primária é simples, porém crítica: garantir que o escalonador sempre tenha algo para executar quando <strong>nenhuma outra tarefa pronta</strong> está disponível. Diferente de uma tarefa de aplicação, a Idle Task não representa uma funcionalidade do sistema, mas sim um <strong>estado operacional do kernel</strong>, sendo o ponto natural onde o sistema pode executar atividades de manutenção, limpeza de recursos e, principalmente, <strong>entrar em modos de baixo consumo</strong>.</p>



<p class="wp-block-paragraph">É exatamente nesse ponto que entram as <strong>Hook Functions</strong>. Hooks são funções de callback definidas pelo usuário e chamadas pelo kernel em momentos bem específicos de sua execução. No contexto deste artigo, duas hooks são centrais:</p>



<ul class="wp-block-list">
<li><strong>Idle Hook (<code>vApplicationIdleHook</code>)</strong>, chamada repetidamente sempre que a Idle Task está executando.</li>



<li><strong>Tick Hook (<code>vApplicationTickHook</code>)</strong>, chamada a cada interrupção de tick do sistema.</li>
</ul>



<p class="wp-block-paragraph">Essas funções permitem ao desenvolvedor <strong>estender o comportamento do kernel sem modificá-lo</strong>, inserindo lógica customizada como monitoramento, estatísticas, watchdogs e — de forma muito comum — <strong>estratégias de economia de energia</strong>.</p>



<p class="wp-block-paragraph">A integração com <strong>Low Power</strong> ocorre quando o desenvolvedor percebe que a Idle Task representa, conceitualmente, o momento em que o sistema <strong>não tem trabalho útil a fazer</strong>. Em microcontroladores modernos, isso é um convite direto para colocar o núcleo em estados como <em>Sleep</em>, <em>Stop</em> ou até <em>Standby</em>. O FreeRTOS fornece suporte explícito a isso por meio do recurso conhecido como <strong>Tickless Idle</strong>, onde o kernel suspende o timer de tick periódico e permite que o processador durma por intervalos longos, acordando apenas quando necessário.</p>



<p class="wp-block-paragraph">Portanto, entender Idle Task, Hooks e Low Power não é apenas conhecer APIs isoladas, mas compreender <strong>como o FreeRTOS modela o tempo ocioso</strong> do sistema e como esse tempo pode ser convertido em <strong>eficiência energética real</strong>, sem sacrificar determinismo nem confiabilidade. Nas próximas seções, vamos desmontar cada um desses conceitos, começando pelo funcionamento interno da Idle Task, passando pelas hooks associadas e chegando à implementação prática de modos de baixo consumo com exemplos completos em C.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/><p>The post <a href="https://mcu.tec.br/rtos/idle-task-hook-functions-e-low-power-no-freertos-guia-completo-para-sistemas-embarcados-eficientes/">Idle Task, Hook Functions e Low Power no FreeRTOS: Guia Completo para Sistemas Embarcados Eficientes</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1028</post-id>	</item>
	</channel>
</rss>
