C语言实现高精度计时和高精度延时微秒级别

C语言实现高精度计时和高精度延时微秒级别

  • 目的说明
  • 环境说明
  • 一、高精度延时(微秒级别)
  • 二、测试例程
  • 三、测试结果

目的说明

在Windows下C语言实现高精度计时功能和高精度延时微秒级别

环境说明

Dev-C++ V5.11

在这里插入图片描述

一、高精度延时(微秒级别)

void vDelayUS(u32 usDelay)
{
    LARGE_INTEGER startTick = {0}, curTick = {0}, countFQR = {0};
    u64 delayTick = 0;


    QueryPerformanceFrequency(&countFQR); /* 获取高精度性能计数器的频率 */
    delayTick = (countFQR.QuadPart * usDelay) / 1000000; /* 延时时间 */
    QueryPerformanceCounter(&startTick);  /* 获取高精度计数器开始值 */
    while (1)
    {
        /* 获取高精度计数器值 */
        QueryPerformanceCounter(&curTick);  
        if (((u64)(curTick.QuadPart - startTick.QuadPart)) >= delayTick)
        {
            break;
        }
    }
}

二、测试例程

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

int main(int argc, char *argv[]) 
{
    LARGE_INTEGER startTick = {0}, endTick = {0}, countFQR = {0};
    u64 startCounter = 0, endCounter = 0;
    u64 absTime = 0;
    double costTime = 0;

    
    QueryPerformanceFrequency(&countFQR); /* 获取高精度性能计数器的频率 */
    QueryPerformanceCounter(&startTick);  /* 获取高精度计数器开始值 */
    vOrgData_Handler();
    QueryPerformanceCounter(&endTick); /* 获取高精度计数器结束值 */

    startCounter = startTick.QuadPart * 1000000 / countFQR.QuadPart; /* 开始计数值us */
    endCounter   = endTick.QuadPart   * 1000000 / countFQR.QuadPart; /* 结束计数值us */
    
    printf("\r\n\r\n");
    printf("High Precision Timing Demo:\r\n");
    costTime = (double)(endTick.QuadPart - startTick.QuadPart) * 1000000.0 / countFQR.QuadPart;
    printf("countFQR:%lldHZ  start:%lld  end:%lld  CostTimes:%0.3fus\r\n", countFQR, startTick.QuadPart, endTick.QuadPart, costTime);
    printf("startCounter:%lld  endCounter:%lld  CostTimes:%uus\r\n", startCounter, endCounter, (endCounter - startCounter));



    QueryPerformanceCounter(&startTick);
    vDelayUS(200000);
    QueryPerformanceCounter(&endTick);

    printf("\r\n\r\n");
    printf("High Precision Delay Demo:\r\n");
    absTime = (endTick.QuadPart - startTick.QuadPart) * 1000000 / countFQR.QuadPart;//us
    printf("start:%lld  end:%lld  CostTimes:%lldus\r\n\r\n", startTick.QuadPart, endTick.QuadPart, absTime);




    printf("Compiler Date : %s  %s\r\n", __DATE__, __TIME__);
    while(1);
    return 0;
}

在这里插入图片描述

三、测试结果

High Precision Timing Demo:
countFQR:10000000HZ  start:430589299158  end:430589305471  CostTimes:631.300us
startCounter:43058929915  endCounter:43058930547  CostTimes:632us


High Precision Delay Demo:
start:430589306518  end:430591306519  CostTimes:200000us

Compiler Date : Mar 21 2024  20:12:07

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/476174.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习-可解释性机器学习:支持向量机与fastshap的可视化模型解析

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的监督学习方法&#xff0c;在分类和回归问题中表现出色。其优点之一是生成的模型具有较好的泛化能力和可解释性&#xff0c;能够清晰地展示特征对于分类的重要性。 fastshap是一种用于快速计算SHAP值&#xff08…

【C++】弥补C语言的不足(②有默认参数的函数)

&#x1f33b;缺省参数 我们先来看一个简单地例子&#xff0c;对于在函数的定义中三个形参都给定默认值&#xff1a; #include <iostream> using namespace std; void fun(int a 10, int b 20, int c 30) {cout << "a " << a << endl;…

RentrantLock关键字详解

一、什么是AQS 全称是 AbstractQueuedSynchronizer&#xff08;队列同步器&#xff0c;下文简称同步器&#xff09;&#xff0c;是阻塞式锁和相关的同步器工具的框架&#xff0c;它是构建锁或者其他同步组件的基础框架。【AQS是实现锁的关键&#xff0c;在锁的实现中聚合同步器…

Python:柱状-折线图

写论文&#xff0c;需要画数据分析图&#xff1a; 用柱状图描述算法执行时间用折线图描述性能改进 示例代码&#xff1a; import numpy as np import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocatorSecurity ["128", "192",…

供电营业厅安防监控视频智能监管解决方案

一、方案背景 供电营业厅作为电力服务的重要窗口&#xff0c;其运营效率和客户满意度直接影响到企业的形象和声誉。在传统的监管模式下&#xff0c;供电营业厅的监控系统与其他消防报警、门禁系统等独立运行&#xff0c;无法做到集中管理、综合监控。为了提升供电营业厅的安防及…

windows上打开redis服务闪退问题处理

方法1&#xff1a;在windows上面打开redis服务时&#xff0c;弹窗闪退可能是6379端口占用&#xff0c;可以用以下命令查看&#xff1a; netstat -aon | findstr 6379 如果端口被占用可以用这个命令解决&#xff1a; taskkill /f /pid 进程号 方法2&#xff1a; 可以使用…

Astra plus 深度相机校准标定

前期工作 在ros中已配置Astra plus 并且深度&#xff0c;ir&#xff0c;彩色图像 首先获取依赖项并编译驱动程序 sudo apt install ros-$ROS_DISTRO-camera-calibration 启动相机 source ./devel/setup.bash roslaunch astra_camera astra_plus.launch 查看发布主题 rostop…

HubSpot社交媒体与CRM数据整合:精准定位与营销优化的新路径

在当今数字化时代&#xff0c;社交媒体与CRM&#xff08;客户关系管理&#xff09;系统已经成为企业营销与客户服务的重要工具。然而&#xff0c;这两大系统之间的数据割裂往往导致企业无法充分利用各自的优势&#xff0c;实现更精准的定位和更有效的营销。HubSpot作为一款功能…

大数据推给需要的人

1.编写一个程序&#xff0c;把变量n的初始值设置为1678&#xff0c;然后利用除法运算和取余运算把变量的每位数字都提出来并打印&#xff0c;输出结果为&#xff1a;n1678n的每位数字是1,6,7,8。 public static void main(String[]args) {int n1678;int a,b,c,d;an%10;bn/10%1…

原创!分解+集成思想新模型!VMD-CNN-BiGRU-Attention一键实现时间序列预测!以风速数据集为例

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 数据介绍 模型流程 创新点 结果展示 部…

基于electron29版本桌面应用app开发例子

基于electron29版本桌面应用app开发例子 htmljsnode.js 开发模式 生成package.json文件&#xff1a; yarn init --yes 或 npm init --yes 运行打包 yarn dev yarn build # electron与electron-builder版本不兼容问题处理办法&#xff1a; 在package.json中scripts中添加 “…

世媒讯软文营销策略如何做才能达到引流的目的

软文营销是一种通过撰写软文来宣传企业、产品或服务的网络营销方式。通过撰写具有故事性、吸引人的文章来间接推广产品、服务或品牌的营销策略。要实现软文营销的目的&#xff0c;即引流&#xff08;吸引流量&#xff09;&#xff0c;以下是一些有效的策略&#xff1a; 新闻策略…

10.注册页面

注册页面 在pages中新建页面register 复制粘贴之前的登录页面 设置上传头像图片 微信官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html <button class"avatar-wrapper" open-type"chooseAvatar&quo…

PCL安装(C++)并配置vs

准备工作&#xff1a; 1.PCL下载包(此教程使用PCL1.11.0) 3.visual studio(此教程使用vs2019) PCL下载&#xff1a; 1、找到自己适合的PCL版本,我选择的是PCL1.11.0。 1.1 Github下载&#xff1a;Releases PointCloudLibrary/pcl GitHub 1.2 百度网盘&#xff1a;https://pan…

初识数据库原理:为什么需要数据库?

初识数据库原理&#xff1a;什么是数据库&#xff1f; Chapter1&#xff1a;什么是数据库&#xff1f; 笔记来源&#xff1a;《漫画数据库》–科学出版社 1.1 为什么需要数据库&#xff1f; 文件应用的管理方式&#xff0c;数据会出现重复。 若各个部门各自管理自己一方的数…

牛客NC196 编辑距离(一)【较难 DFS/DP,动态规划,样本对应模型 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/6a1483b5be1547b1acd7940f867be0da 思路 编辑距离问题 什么是两个字符串的编辑距离&#xff08;edit distance&#xff09;&#xff1f;给定字符串s1和s2&#xff0c;以及在s1上的如下操作&#xff1a;插入&…

【ARM】DSTREAM上面的各个指示灯代表什么意思?

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 对于DStream仿真器上面的指示灯亮灭代表的意义进行分析。 2、 问题场景 主要对于DStream仿真器的使用过程中&#xff0c;不同的情况下面仿真器的指示灯会进行相应的亮灭。了解一下不同指示灯的亮灭所提示的信息…

部署Prometheus+grafana详解

目录 一、prometheus 介绍 二、prometheus 对比 zabbix 三、prometheus 监控插件 四、部署 1、下载所需的包 2.编辑prometheus的配置文件 3、编辑alertmanager 的配置文件 4、tmpl 模板&#xff08;将此文件创建在/opt/alertmanager/tmpl/&#xff09; 5.启动&#xff0…

Google colab中如何从kaggle中接入数据?

写在前面 使用google colab进行数据分析和探索时&#xff0c;可引用的数据源包括但不限于&#xff1a;1.可上传的数据文件用本地加载的的方式打开数据资源&#xff1b;2.从网络链接中直接打开后加载到缓存中的文件资源&#xff1b;3.通过API或者外部的开放接口加载数据&#x…

人生亏钱指南pdf分享【谨防上当】【警钟长鸣】不知道动了多少人蛋糕,看到后赶快收藏起来

查理芒格&#xff1a;如果知道我会死在哪里&#xff0c;那我将永远不去那个地方 书中分别投资篇、知识付费篇、合伙合作篇、实体项目篇、欺诈篇、借贷篇、健康篇等方向详细解释可能亏钱的坑&#xff01; 书中说到&#xff1a; 成年人的世界&#xff0c;踩坑已是日常&#xff0…