在实际的项目开发过程中,常常遇到需要得到一段代码的运行时间,通常的方法是用示波器来测量,这篇博文将用SysTick来实现精确测量程序运行的时间。STM32F4的内核定时器SysTick是一个24位的定时器,需要注意最大的测量时间。

1,开发环境

1,固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0

2,编译器:ARMCCV5.06

3,IDE:KeiluVision5

4,操作系统:Windows10专业版

2,程序源码

MeasureTime.h文件

[cpp]viewplaincopy/**

******************************************************************************

*@fileMeasureTime.h

*@authorXinLi

*@versionv1.0

*@date24-October-2017

*@briefMeasureprogramruntimemodule.

******************************************************************************

*@attention

*

*《h2》《center》Copyright©2017XinLi《/center》《/h2》

*

*Thisprogramisfreesoftware:youcanredistributeitand/ormodify

*itunderthetermsoftheGNUGeneralPublicLicenseaspublishedby

*theFreeSoftwareFoundation,eitherversion3oftheLicense,or

*(atyouroption)anylaterversion.

*

*Thisprogramisdistributedinthehopethatitwillbeuseful,

*butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof

*MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe

*GNUGeneralPublicLicenseformoredetails.

*

*YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense

*alongwiththisprogram.Ifnot,see《https://www.gnu.org/licenses/》。

*

******************************************************************************

*/

#ifndef__MEASURETIME_H

#define__MEASURETIME_H

#ifdef__cplusplus

extern“C”{

#endif

/*Headerincludes-----------------------------------------------------------*/

#include“stm32f4xx.h”

/*Macrodefinitions---------------------------------------------------------*/

/*Typedefinitions----------------------------------------------------------*/

/*Variabledeclarations-----------------------------------------------------*/

/*Variabledefinitions------------------------------------------------------*/

/*Functiondeclarations-----------------------------------------------------*/

/*Functiondefinitions------------------------------------------------------*/

/**

*@briefStartmeasuretime.

*@paramNone.

*@returnNone.

*/

__STATIC_INLINEvoidMeasureTimeStart(void)

{

SysTick-》CTRL|=SysTick_CLKSource_HCLK;/*SettheSysTickclocksource.*/

SysTick-》LOAD=0xFFFFFF;/*Timeload(SysTick-》LOADis24bit)。*/

SysTick-》VAL=0xFFFFFF;/*Emptythecountervalue.*/

SysTick-》CTRL|=SysTick_CTRL_ENABLE_Msk;/*Startthecountdown.*/

__nop();/*Waitingforamachinecycle.*/

}

/**

*@briefStopmeasuretime.

*@param[in]clock:Systemclockfrequency(unit:MHz)。

*@returnProgramruntime(unit:us)。

*/

__STATIC_INLINEdoubleMeasureTimeStop(uint32_tclock)

{

uint32_tcount=SysTick-》VAL;/*Readthecountervalue.*/

SysTick-》CTRL&=~SysTick_CTRL_ENABLE_Msk;/*Closecounter.*/

doubletime=0.0;

if(clock》0)

{

time=(double)(0xFFFFFF-count)/(double)clock;/*Calculateprogramruntime.*/

}

returntime;

}

#ifdef__cplusplus

}

#endif

#endif/*__MEASURETIME_H*/

main.c文件

[cpp]viewplaincopy/**

******************************************************************************

*@filemain.c

*@authorXinLi

*@versionv1.0

*@date24-October-2017

*@briefMainprogrambody.

******************************************************************************

*@attention

*

*《h2》《center》Copyright©2017XinLi《/center》《/h2》

*

*Thisprogramisfreesoftware:youcanredistributeitand/ormodify

*itunderthetermsoftheGNUGeneralPublicLicenseaspublishedby

*theFreeSoftwareFoundation,eitherversion3oftheLicense,or

*(atyouroption)anylaterversion.

*

*Thisprogramisdistributedinthehopethatitwillbeuseful,

*butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof

*MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe

*GNUGeneralPublicLicenseformoredetails.

*

*YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense

*alongwiththisprogram.Ifnot,see《https://www.gnu.org/licenses/》。

*

******************************************************************************

*/

/*Headerincludes-----------------------------------------------------------*/

#include“main.h”

#include“MeasureTime.h”

/*Macrodefinitions---------------------------------------------------------*/

/*Typedefinitions----------------------------------------------------------*/

/*Variabledeclarations-----------------------------------------------------*/

/*Variabledefinitions------------------------------------------------------*/

static__IOdoublerunTime=0.0;

/*Functiondeclarations-----------------------------------------------------*/

__STATIC_INLINEvoiddelay_1us(void);

/*Functiondefinitions------------------------------------------------------*/

/**

*@briefMainprogram.

*@paramNone.

*@returnNone.

*/

intmain(void)

{

for(;;)

{

MeasureTimeStart();

delay_1us();

runTime=MeasureTimeStop(84);

}

}

/**

*@briefOnemicroseconddelay.

*@paramNone.

*@returnNone.

*/

__STATIC_INLINEvoiddelay_1us(void)

{

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

__nop();__nop();__nop();__nop();

}

systick 时间修改_如何用SysTick实现测量程序运行时间相关推荐

  1. 运行时间_一种简单、实用的测量程序运行时间的方法

    点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记! 前言 平时我们可能很少去关注程序运行的时间,但是在一些情况下可能需要对程序进行一个整体的复盘.优化. 那么,程序运行的时间就是一个 ...

  2. df满足条件的值修改_如何用python实现熵值法求指标权重(实例)

    权重是指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性.而在我们的数据分析过程中,倘若各个 ...

  3. mysql 社区版密码如何修改_如何用优雅的方法修改MySQL root密码

    搭噶好,我系小编,我好久没发文章了啊,今天发文章的原因是,我竟然忘了我的MySQL root密码..本来想找RAKsmart客服直接重置啥的,后来想想还是自己搞吧,还能长知识. 然后,我发现一个事情, ...

  4. pyqt designer connect无响应_如何用PyQt编写桌面程序,创建并打开播放列表?

    由于电脑上的短视频太多了,并且分别存放在各个子目录下,每次更新后想要整理视频比较麻烦,因此想用Python编写程序来辅助管理视频文件.其实写个Python脚本程序即可实现大器的需求,但为了多练习PyQ ...

  5. python中编写函数素数_如何用Python编写素数程序?

    成为一个认证的专业素数是一个大于1的自然数,它没有除1以外的任何除数.你可以用Python编写一个代码来帮助你找到所有的素数.在本文中,我们将按照以下顺序在Python中编写一个素数程序:什么是素数? ...

  6. vscodepython使用教程_技术教程_如何用vscode写python程序- 中国it教程网

    安装Python插件 确保Python的安装目录必须要添加到系统环境变量插件才能正常运行.计算机->属性->高级系统设置->环境变量,在系统变量里找到"Path" ...

  7. java怎么下载到电脑上_如何用电脑下载java程序并传到手机里面

    相信大家都有过用gprs下载java程序的经历,很多下载是免费的,网上很多免费的资源,可是通过gprs下载的话就要收取流量费了(流量费视各地不同情况而定,我知道的在武汉是3分钱/K,深圳是包月的,20 ...

  8. 运行时间_如何测量嵌入式软件运行时间?

    整理:黄工 素材来源:最后一个Bug 程序的运行时间,对一个系统比较重要.有的地方要求精确延时Nus,有的地方要求程序运行时间不能超过Nus. 所以,今天给大家分享一些常见测量程序(任务)运行时间的方 ...

  9. 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)

    /** ****************************************************************************** * @file main.c * ...

最新文章

  1. Python:从零搭建Redis-Scrapy分布式爬虫
  2. JAVA中rootpanel_Java JPanel.setFocusCycleRoot方法代码示例
  3. 两平面平行方向向量关系_一文读懂 GDT 中的平面度
  4. java集合的遍历_Java集合之遍历
  5. python random库怎么用_Python || Random库的使用
  6. 算法提高 求最大值java_算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
  7. python执行原理是什么意思_简述Python程序的执行原理。
  8. Mac下使用数据库将Excel数据转换存入.plist
  9. Sublime Text2.0.2注册码,添加python编译系统:
  10. mysql安装手册(2)
  11. centos 6.4 使用sendmail发送邮件(cacti)
  12. WiFi共享大师 去广告
  13. idea的设置,导致list长度只有1000
  14. java原始人赛车,原始人赛车
  15. RESTful理解与实践
  16. 阳离子铱配合物(Ir1+)|(Ir2-)|Ir(dmecf3ppz)2bpy+(PF6)-齐岳合成
  17. 安卓电话补充业务 SS
  18. 语义相似度的计算方法
  19. 大连工业大学艺术学院计算机考试,大连工业大学艺术与信息工程学院
  20. Android中白天模式与夜间模式的切换

热门文章

  1. Java学习总结之坦克大战项目(完结版)
  2. 【数据库】Nosql数据库的种类
  3. 【Oracle】PLSQL Developer 15 的安装与使用
  4. NLP——常用工具汇总
  5. FineUI开源版之TreeGrid(修改)
  6. 计算机网络五层协议的体系结构
  7. 虚拟机下面没usb图标
  8. 超经典!国际著名计算机教育推动者发表计算机原理文档,面面俱到
  9. day_24 正则表达式
  10. 光盘文件.7z格式解压缩