//this is a bit contrived,but it illustrates what I'm trying to doconst uint16_t print_interval = 5000; // millisecondsstatic 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 – 翻滚安全计时器(勾选)比较全部内容,希望文章能够帮你解决c – 翻滚安全计时器(勾选)比较所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)