我會創造現在從您的定時器寄存器讀取實現時鐘:
#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