0

我熟悉使用mgos_msleep(value)or mgos_usleep(value)。但是,使用睡眠对设备不利。

有人可以提出更好的方法吗?

4

1 回答 1

0

这取决于您的系统架构和用例。

猫鼬操作系统中的睡眠调用不会导致忙等待。睡眠调用传达给操作系统在睡眠持续时间结束之前不安排特定进程。“mgos_usleep”功能是一种分辨率更高(微秒)的睡眠,其影响应该很小,但这又取决于您的要求/用例。

关于定时器,Mongoose OS 支持软件定时器和硬件定时器。使用软件定时器或硬件定时器的决定反过来取决于您的应用程序要求。

mgos_set_timer 设置具有毫秒超时和相应回调的软件计时器。软件定时器频率以毫秒为单位指定,软件定时器数量不受限制。软件定时器回调在猫鼬任务上下文中执行。这个计时器似乎具有相当低的精度和高抖动。

mgos_set_hw_timer 设置一个具有微秒超时和相应回调的硬件计时器。硬件计时器回调在 ISR 上下文中执行,因此操作受到限制。硬件计时器或计数器应根据您使用的处理器类型提供,因此您可能需要查看数据表。因此,硬件计时器的数量受到限制,并且频率以微秒为单位指定。

于 2019-12-28T09:31:00.027 回答