0

我在腻子控制台上显示 32 位计时器值。计时器包括自我的 stm32wb55 启动以来的微秒时间。使用以下代码,它可以像我想要的那样工作:

uint32_t time_micro32

sprintf((char*)buf,
          "Time: %lu \r\n",
         (time_micro32));

但现在,我想以 64 位分辨率显示时间uint64_t time_micro64。我尝试了很多,但没有任何效果。有人可以帮我吗?我在 STM32CubeIDE 中编程

4

1 回答 1

1

我在 STM32CubeIDE 中编程

所以你很可能在它的“nano”版本中使用 newlib - newlib 的一个较小版本,它不处理打印 64 位变量。

与完整的 newlib 版本(或使用其他 C 标准库)链接,代码可以正常工作。搜索您的 gui - 应该有一个选项,例如“使用标准库的 -nano 版本”或“将 -specs=nano.specs 传递给编译器”。取消选中该选项。确保-lnanonor-specs=nano.specs或类似选项未传递给编译器。之后,您可以使用%llu"%"PRIu64

更喜欢使用snprintf而不是sprintf.

还有其他选择吗?

滚动您自己的实现,将 64 位变量转换为字符串 - 编写这样的函数非常简单。然后使用此函数并打印结果字符串。我有这样的功能

于 2021-02-11T12:32:19.183 回答