加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – clock()如何在访问系统时钟时起作用?

发布时间:2020-12-16 07:03:32 所属栏目:百科 来源:网络整理
导读:我正在使用附带最少库的STM32微控制器.我想使用 ctime中的clock()函数. (可能是新的std :: chrono)但是我停留在clock()返回-1. 这并不奇怪,因为我不希望gcc-arm-none-eabi中的库知道我的微控制器的外围布局. 如何告诉时钟从哪里得到它的滴答数?我可以简单地
我正在使用附带最少库的STM32微控制器.我想使用< ctime>中的clock()函数. (可能是新的std :: chrono)但是我停留在clock()返回-1.

这并不奇怪,因为我不希望gcc-arm-none-eabi中的库知道我的微控制器的外围布局.

如何告诉时钟从哪里得到它的滴答数?我可以简单地重新声明它,还是我需要实现一个较低级别的功能?

解决方法

这通常是将libc实现移植到新平台的工作的一部分.当您编译glibc或newlib(C标准库的两个最流行的实现)的副本时,您必须提供一系列存根方法,其中一个将提供时间. gcc-arm-none-eabi是newlib中预定义的目标,它实现了很多这些存根,但不是用于获取时间的目标,因为就像你说的那些是特定于应用程序的.

最好的办法是自己构建工具链,实现这个方法.您可以按照说明here,但在构建newlib之前编辑目标以填充此存根. here提供了实现存根的良好参考.

或者,您可以直接实现自己的时钟功能,当您链接您的应用程序时,它将更喜欢您的版本而不是库中的版本.但是,请注意,这意味着库中调用时钟的任何内容仍然会调用损坏的库版本,因此您可能需要重新实现许多功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读