API de simulação de tempo
uint64_t get_sim_nanos()
Retorna o tempo atual (virtual) do simulador em nanossegundos.
Você pode obter a hora atual em microssegundos chamando get_sim_nanos() / 1000, ou em milissegundos chamando get_sim_nanos() / 1000000.
timer_t timer_init(timer_config_t *config)
Inicializa um novo temporizador. Retorna o identificador do temporizador. Chame timer_start() para iniciar o cronômetro e defina o retorno de chamada chip_timer_event() para responder aos eventos do cronômetro.
A estrutura timer_config_t contém os seguintes campos:
| Campo | Tipo | Descrição |
|---|---|---|
callback | callback | Chamado quando o timer dispara |
user_data | void * | Dados que serão passados no primeiro argumento para o callback |
A assinatura para a função callback é a seguinte:
void chip_timer_callback(void *user_data) {
/* Chamado quando o timer dispara */
}
Nota: timer_init() só pode ser chamado de chip_init(). Não chame isso mais tarde.
void timer_start(uint32_t timer_id, uint32_t micros, bool repeat)
Agenda o timer dado por timer_id. O argumento micros determina quantos microssegundos passarão até que o timer chame chip_timer_event(). Se repeat for false, o evento do timer será chamado uma vez (one-shot timer). Se repeat for true, o evento timer continuará sendo chamado a cada microssegundos micros, até que você chame timer_stop() ou reconfigure o timer com timer_start.
void timer_start_ns(uint32_t timer_id, uint64_t nanos, bool repeat)
Semelhante a timer_start, mas especifica a duração do cronômetro em nanossegundos em vez de microssegundos. Prefira timer_start() quando possível, para melhorar o desempenho.
void timer_stop(uint32_t timer_id)
Interrompe o cronômetro fornecido. Se o timer ainda não disparou, ele não disparará até que você chame timer_start() novamente.