Software Timer
Relógios de software são funções de callbacks que são executadas pelo RTOS. Os callbacks podem ser executados de forma recorrente ou uma única vez (quando o tempo tiver passado).
Para usarmos um timer de software é necessário:
- Criar a variável global que representará o timer
TimerHandle_t xTimer
- Criar a função de
callback:void vTimerCallback(TimerHandle_t xTimer) { ... } - Na task, criar o timer:
xTimer = xTimerCreate("Timer", 100, pdTRUE, 0, vTimerCallback);
- E então ativar o timer:
xTimerStart(xTimer, 0);
A função possui os seguintes argumentos: xTimerCreate(pcTimerName, xTimerPeriod, uxAutoReload, pvTimerID, pxCallbackFunction).
pcTimerName: É um nome único para o Timer (string).xTimerPeriod: É o período em ticks que o timer vai executar. Ex:100executa a aproximadamente 100msuxAutoReload:pdTRUEse o timer for recorrente epdFALSEse for executar uma única vezpvTimerID: Não faço ideia... =)pxCallbackFunction: Função que será chamada quando o timer estourar.
Código exemplo:
c
TimerHandle_t xTimer;
void vTimerCallback(TimerHandle_t xTimer) {
printf("estourou \n");
}
static void task_foo(void *pvParameters) {
xTimer = xTimerCreate("Timer", 100, pdTRUE, 0, vTimerCallback);
while(1) {
vTaskDelay(1000);
}
}