显示给定系统滴答计数的时间字符串
Posted
技术标签:
【中文标题】显示给定系统滴答计数的时间字符串【英文标题】:Display time string given system tick count 【发布时间】:2014-02-05 01:36:15 【问题描述】:给定:
自通过unsigned int systemTicks(void);
冷启动以来的系统滴答数
通过unsigned int usPerTick(void);
的每个系统滴答声的微秒数
如何在 C 中创建固定宽度的时间戳字符串?我可以灵活地使用这种格式,但希望最多支持 100 分钟并保持毫秒分辨率。一种示例格式是"99:59:999"
,这意味着自冷启动以来已经过去了 99 分 59.999 秒。
printf
允许我用最小宽度而不是最大宽度写小数(分、秒、毫秒)。我正在寻找简单的解决方案。
【问题讨论】:
这很有帮助:***.com/questions/14130747 【参考方案1】:您想打印一个固定宽度,以微秒为单位的前导零小数部分。由于微秒中有 6 位数字,所以你想要,
sprintf(timestamp,"%d:%02d.%06d",ticks/60,ticks%60,mseconds);
并添加结构/指针的味道......
【讨论】:
我选择了sprintf(timestamp, "%02d:%02d.%03d", minutes, seconds, milliseconds);
。对于固定宽度的字符串,分钟也需要前导零。我还添加了检查以确保分钟、秒和毫秒分别不超过 2、2 和 3 位数字,以确保时间戳缓冲区不会溢出。
太棒了!我使用了类似的模式来记录嵌入式系统等的高分辨率时序。以上是关于显示给定系统滴答计数的时间字符串的主要内容,如果未能解决你的问题,请参考以下文章
STM32 的系统滴答定时器( Systick) 彻底研究解读