繁体   English   中英

Contiki计时器,无需暂停过程

[英]Contiki timer without pausing the process

有没有办法等待计时器到期而不暂停进程? 如果我们使用

 PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

我们暂停该过程。 假设我们要继续做其他事情,并且在计时器到期时检查函数的值是否已更改。

如果不可能,我是否必须开始一个等待的新过程?

谢谢。

不,没有-这是事件计时器如何工作的基本结果。 Contiki多线程/多处理是协作的-进程必须自愿暂停执行才能让其他进程运行。 因为事件计时器是由另一个(系统)进程管理的,所以如果您的进程从不放弃执行,则计时器进程将永远无法运行。 因此,您的进程将永远无法收回计时器事件。

听起来事件计时器可能不是您的最佳选择。 您可以改用rtimer

rtimer_clock_t end = RTIMER_NOW() + RTIMER_SECOND;
while(RTIMER_CLOCK_LT(RTIMER_NOW(), end)) {
   /* do stuff */
}

切记偶尔拨动看门狗计时器-如果您的进程在执行事务时停滞了几秒钟(无论如何不建议这样做),看门狗将过期。

通常的方法是编写一个中断处理程序来处理计时器中断。该中断处理程序的优先级高于主应用程序。

因此,当发生中断事件时,中断处理程序将运行到完成,然后执行返回到主应用程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM