Escolar Documentos
Profissional Documentos
Cultura Documentos
2 - Filas: tarefas-interrupções
3 - Semáforo Binário
4 - Semáforo Contador
5 - Mutexes
Filas (Queues)
1- Função
2- Elementos e características
3- Operações
Função: pra que servem queues?
Comunicação tarefa-tarefa e tarefa-interrupção!
Elementos de uma Fila
Criando uma Fila
xSemaphoreHandle xSemaphore);
Nome do Descrição
parâmetro
xSemaphore Variável do tipo SemaphoreHandle que armazenará o identificador do semáforo que está sendo criado.
Valor retornado Se NULL for retornado, o semáforo não pode ser criado pois não há memória heap suficiente disponível
para que o FreeRTOS aloque as estruturas de dados do semáforo.
Se um valor não NULL for retornado, o semáforo foi criado com sucesso. O valor retornado deve ser
armazenado como o identificador do semáforo criado.
PEGANDO UM SEMÁFORO BINÁRIO
portBASE_TYPE xSemaphoreTake(
xSemaphoreHandle xSemaphore,
TickType_t xTicksToWait);
PEGANDO UM SEMÁFORO BINÁRIO
Nome do Descrição
parâmetro/Valor
retornado
Um semáforo é referenciado por uma variável do tipo SemaphoreHandle. Ele deve ser criado explicitamente antes
que possa ser usado.
xTicksToWait A quantidade máxima de tempo que a tarefa deve permanecer no estado Bloqueada para aguardar o semáforo
caso ainda não esteja disponível.
Se xTicksToWait for zero, xSemaphoreTake() retornará imediatamente se o semáforo não estiver disponível.
PEGANDO UM SEMÁFORO BINÁRIO
● pdPASS
● pdFALSE
LIBERANDO UM SEMÁFORO BINÁRIO
portBASE_TYPE xSemaphoreGive(
xSemaphoreHandle xSemaphore);
portBASE_TYPE xSemaphoreGiveFromISR(
xSemaphoreHandle xSemaphore,
signed portBASE_TYPE
*pxHigherPriorityTaskWoken);
LIBERANDO UM SEMÁFORO BINÁRIO
Nome do Descrição
parâmetro/Valor
retornado
pxHigherPriorityT
askWoken
LIBERANDO UM SEMÁFORO BINÁRIO
● pdTRUE
● errQUEUE_FULL
TROCA DE CONTEXTO NA ISR
● Para forçar a troca de contexto e o chaveamento para uma tarefa
com FromISR.
Semáforos Binários
Semáforo Contador
● Tratando Eventos
● Gestão de recursos
Tratando Eventos
Gestão de recursos
Semáforo Contador
● configUSE_COUNTING_SEMAPHORES must be set to 1 inFreeRTOSConfig.h
● xSemaphoreCreateCounting( uxMaxCount , uxInitialCount )
○ uxMaxCount -> Valor máximo que o semaforo vai contar
○ uxInitialCount -> Valor inicial do semaforo
○ Retorna -> Caso retorne NULL indica que houve erro na criação do semaforo
● xSemaphoreCreateCountingStatic( uxMaxCount , uxInitialCount , pxSempahoreBuffer )
○ pxSempahoreBuffer -> Variavel do tipo StaticSemaphore_t, que indica onde será
armazenado as informações do semáforo
○ Retorna -> NULL caso o pxSempahoreBuffer seja NULL e caso contrario retorna um
identificador pelo qual o semaforo pode ser referenciado
Semáforo Contador
● Outras funções:
○ BaseType_txSemaphoreGive( xSemaphore)