systick 时间修改_如何用SysTick实现测量程序运行时间
在实际的项目开发过程中,常常遇到需要得到一段代码的运行时间,通常的方法是用示波器来测量,这篇博文将用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实现测量程序运行时间相关推荐
- 运行时间_一种简单、实用的测量程序运行时间的方法
点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记! 前言 平时我们可能很少去关注程序运行的时间,但是在一些情况下可能需要对程序进行一个整体的复盘.优化. 那么,程序运行的时间就是一个 ...
- df满足条件的值修改_如何用python实现熵值法求指标权重(实例)
权重是指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性.而在我们的数据分析过程中,倘若各个 ...
- mysql 社区版密码如何修改_如何用优雅的方法修改MySQL root密码
搭噶好,我系小编,我好久没发文章了啊,今天发文章的原因是,我竟然忘了我的MySQL root密码..本来想找RAKsmart客服直接重置啥的,后来想想还是自己搞吧,还能长知识. 然后,我发现一个事情, ...
- pyqt designer connect无响应_如何用PyQt编写桌面程序,创建并打开播放列表?
由于电脑上的短视频太多了,并且分别存放在各个子目录下,每次更新后想要整理视频比较麻烦,因此想用Python编写程序来辅助管理视频文件.其实写个Python脚本程序即可实现大器的需求,但为了多练习PyQ ...
- python中编写函数素数_如何用Python编写素数程序?
成为一个认证的专业素数是一个大于1的自然数,它没有除1以外的任何除数.你可以用Python编写一个代码来帮助你找到所有的素数.在本文中,我们将按照以下顺序在Python中编写一个素数程序:什么是素数? ...
- vscodepython使用教程_技术教程_如何用vscode写python程序-
中国it教程网
安装Python插件 确保Python的安装目录必须要添加到系统环境变量插件才能正常运行.计算机->属性->高级系统设置->环境变量,在系统变量里找到"Path" ...
- java怎么下载到电脑上_如何用电脑下载java程序并传到手机里面
相信大家都有过用gprs下载java程序的经历,很多下载是免费的,网上很多免费的资源,可是通过gprs下载的话就要收取流量费了(流量费视各地不同情况而定,我知道的在武汉是3分钱/K,深圳是包月的,20 ...
- 运行时间_如何测量嵌入式软件运行时间?
整理:黄工 素材来源:最后一个Bug 程序的运行时间,对一个系统比较重要.有的地方要求精确延时Nus,有的地方要求程序运行时间不能超过Nus. 所以,今天给大家分享一些常见测量程序(任务)运行时间的方 ...
- 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)
/** ****************************************************************************** * @file main.c * ...
最新文章
- Python:从零搭建Redis-Scrapy分布式爬虫
- JAVA中rootpanel_Java JPanel.setFocusCycleRoot方法代码示例
- 两平面平行方向向量关系_一文读懂 GDT 中的平面度
- java集合的遍历_Java集合之遍历
- python random库怎么用_Python || Random库的使用
- 算法提高 求最大值java_算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
- python执行原理是什么意思_简述Python程序的执行原理。
- Mac下使用数据库将Excel数据转换存入.plist
- Sublime Text2.0.2注册码,添加python编译系统:
- mysql安装手册(2)
- centos 6.4 使用sendmail发送邮件(cacti)
- WiFi共享大师 去广告
- idea的设置,导致list长度只有1000
- java原始人赛车,原始人赛车
- RESTful理解与实践
- 阳离子铱配合物(Ir1+)|(Ir2-)|Ir(dmecf3ppz)2bpy+(PF6)-齐岳合成
- 安卓电话补充业务 SS
- 语义相似度的计算方法
- 大连工业大学艺术学院计算机考试,大连工业大学艺术与信息工程学院
- Android中白天模式与夜间模式的切换