ASF4 Microchip API计时器驱动程序重置功能

问题描述 投票:1回答:2

我正在将ASF4 API hal_timer用于ARM Cortex M4。我正在使用计时器驱动程序来计时数据序列。为什么不存在复位功能?我在TIMER_TASK_ONE_SHOT模式下使用计时器,想在需要时将其重置。

我认为很简单

timer_start(&TIMER_0);
timer_stop(&TIMER_0);

可以解决问题,但似乎不起作用。

是否需要为每个计时事件重新初始化计时器?

我可能缺少明显的东西。我是否错误地解决了此问题,原因是为什么timer_reset()方法不存在?

c arm embedded atmel
2个回答
0
投票

我没有这个API的经验,但是从文档中可以明显看出,单个计时器可以在不同的时间段执行多个任务,因此重置TIMER_0几乎没有语义。相反,您需要重置与计时器关联的单个计时器任务-其中可能有多个。

documentation(较差且包含错误),到更可靠的source code

timer_task_instance.time_label = TIMER_0.time ;

其中timer_task_instance是您要重置的struct timer_task实例。这会将开始时间设置为当前时间。

可能最好将其包装在函数中:

// Restart current interval, return interval.
uint32_t timer_restart( struct timer_descriptor* desc, struct timer_task* tsk )
{
    tsk->time_label = desc->time
    return tsk->interval ;
}

然后:

timer_restart( &TIMER_0, &timer_task_instance ) ;

-1
投票

Clifford。我发现您对嵌入式系统感兴趣,我在哪里可以私下与您交谈?我可以在哪个网站找到您?

© www.soinside.com 2019 - 2024. All rights reserved.