gpt4 book ai didi

c - ASF4 Microchip API定时器驱动复位函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:52 26 4
gpt4 key购买 nike

我正在为 ARM Cortex M4 使用 ASF4 API hal_timer。我正在使用定时器驱动程序对数据序列进行计时。为什么不存在重置功能?我在 TIMER_TASK_ONE_SHOT 模式下使用计时器,并希望在需要时重置它。

我想的很简单

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

可以解决问题,但似乎行不通。

每次计时事件都需要重新初始化定时器吗?

我可能遗漏了一些明显的东西。我是否错误地处理了这个问题,原因是为什么 timer_reset() 方法不存在?

最佳答案

我没有这个 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 ) ;

关于c - ASF4 Microchip API定时器驱动复位函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58553878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com