gpt4 book ai didi

c++ - 侧翻安全计时器(滴答声)比较

转载 作者:可可西里 更新时间:2023-11-01 17:20:44 25 4
gpt4 key购买 nike

我有一个硬件计数器,我可以观察它以考虑时序问题。它计算毫秒并存储在 16 位无符号值中。我如何安全地检查计时器值是否已超过特定时间并安全地处理不可避免的翻转:

//this is a bit contrived, but it illustrates what I'm trying to do
const uint16_t print_interval = 5000; // milliseconds
static uint16_t last_print_time;

if(ms_timer() - last_print_time > print_interval)
{
printf("Fault!\n");
last_print_time = ms_timer();
}

当 ms_timer 溢出到 0 时,此代码将失败。

最佳答案

您实际上不需要在这里做任何事情。假设 ms_timer() 返回一个 uint16_t 类型的值,您问题中列出的原始代码可以正常工作。

(还假设计时器在检查之间不会溢出两次...)

要说服自己是这种情况,请尝试以下测试:

uint16_t t1 = 0xFFF0;
uint16_t t2 = 0x0010;
uint16_t dt = t2 - t1;

dt 将等于 0x20

关于c++ - 侧翻安全计时器(滴答声)比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61443/

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