我会创造现在从您的定时器寄存器读取实现时钟:
#include <chrono>
#include <cstdint>
struct clock
{
using rep = std::int64_t;
using period = std::milli;
using duration = std::chrono::duration<rep, period>;
using time_point = std::chrono::time_point<clock>;
static constexpr bool is_steady = true;
static time_point now() noexcept
{
return time_point{duration{"asm to read timer register"}};
}
};
调整期间任何速度的处理器在蜱(但它必须是一个编译时间常数)。上面我已经设置为1滴答/毫秒。下面是它应该如何读1点== 2ns的:
using period = std::ratio<1, 500'000'000>;
现在你可以说喜欢的东西:
auto t = clock::now(); // a chrono::time_point
和
auto d = clock::now() - t; // a chrono::duration
什么RTOS还不包括计时器服务! ?无论如何,什么是“Chrono”?它可以涉及许多事情。如果你指的是C++ 11,那么你可以标记这个C++并且是明确的。另外,时间和定时器服务是硬件依赖性,所以如果你的嵌入式库支持它,你仍然需要在底层硬件和RTOS上实现系统调用 - 它不会起作用! –
Clifford