gpt4 book ai didi

c++ - 我可以重新定位 chrono 类以使用微 Controller 作为滴答生成器吗?

转载 作者:行者123 更新时间:2023-12-04 01:06:35 24 4
gpt4 key购买 nike

我想在我的微 Controller 中使用计时器作为 chrono 类的滴答生成器。想象一下,我有一个函数可以从 MCU 中的定时器寄存器获取滴答声,我称它为 get_tcik(),这个寄存器是 32 位无符号整数,每 1 微秒递增一次。现在为了将它与 chrono 一起使用,我创建了一个这样的类:

class clock
{
public:
static std::chrono::time_point<clock, std::chrono::duration<std::uint32_t, std::ratio<1, 1000000> now() {
return std::chrono::time_point<clock, std::chrono::duration<std::uint32_t, std::ratio<1, 1000000> {std::chrono::duration<uint32_t, std::ratio<1, 1000000>> { get_tick() }};
}
};

它不起作用!

最佳答案

它不起作用,因为 chrono 库检测到次优代码格式。 :-)

开个玩笑。

您缺少 clock 的一些嵌套类型该客户端代码可能希望在那里。您也可以使用 std::micro代替 std::ratio<1, 1000000> .你的选择没有错。这只是一个风格建议。

#include <chrono>

class clock
{
public:
using rep = std::uint32_t;
using period = std::micro;
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() {
return time_point{duration { get_tick() }};
}
};

这是官方要求:http://eel.is/c++draft/time.clock.req

请注意,您的时钟大约每 1 小时 11 分钟翻转一次。

关于c++ - 我可以重新定位 chrono 类以使用微 Controller 作为滴答生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66262132/

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