当前位置:首页 > 单片机 > 单片机
[导读] 在实际的项目开发过程中,常常遇到需要得到一段代码的运行时间,通常的方法是用示波器来测量,这篇博文将用SysTick来实现精确测量程序运行的时间。STM32F4的内核定时器SysTick是一个24位的定时器,需要

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


1,开发环境

1,固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0

2,编译器:ARMCC V5.06

3,IDE:Keil uVision5

4,操作系统:Windows 10 专业版


2,程序源码

MeasureTime.h文件

  1. /**

  2. ******************************************************************************

  3. *@fileMeasureTime.h

  4. *@authorXinLi

  5. *@versionv1.0

  6. *@date24-October-2017

  7. *@briefMeasureprogramruntimemodule.

  8. ******************************************************************************

  9. *@attention

  10. *

  11. *

    Copyright©2017XinLi

  12. *

  13. *Thisprogramisfreesoftware:youcanredistributeitand/ormodify

  14. *itunderthetermsoftheGNUGeneralPublicLicenseaspublishedby

  15. *theFreeSoftwareFoundation,eitherversion3oftheLicense,or

  16. *(atyouroption)anylaterversion.

  17. *

  18. *Thisprogramisdistributedinthehopethatitwillbeuseful,

  19. *butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof

  20. *MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe

  21. *GNUGeneralPublicLicenseformoredetails.

  22. *

  23. *YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense

  24. *alongwiththisprogram.Ifnot,see.

  25. *

  26. ******************************************************************************

  27. */

  28. #ifndef__MEASURETIME_H

  29. #define__MEASURETIME_H

  30. #ifdef__cplusplus

  31. extern"C"{

  32. #endif

  33. /*Headerincludes-----------------------------------------------------------*/

  34. #include"stm32f4xx.h"

  35. /*Macrodefinitions---------------------------------------------------------*/

  36. /*Typedefinitions----------------------------------------------------------*/

  37. /*Variabledeclarations-----------------------------------------------------*/

  38. /*Variabledefinitions------------------------------------------------------*/

  39. /*Functiondeclarations-----------------------------------------------------*/

  40. /*Functiondefinitions------------------------------------------------------*/

  41. /**

  42. *@briefStartmeasuretime.

  43. *@paramNone.

  44. *@returnNone.

  45. */

  46. __STATIC_INLINEvoidMeasureTimeStart(void)

  47. {

  48. SysTick->CTRL|=SysTick_CLKSource_HCLK;/*SettheSysTickclocksource.*/

  49. SysTick->LOAD=0xFFFFFF;/*Timeload(SysTick->LOADis24bit).*/

  50. SysTick->VAL=0xFFFFFF;/*Emptythecountervalue.*/

  51. SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;/*Startthecountdown.*/

  52. __nop();/*Waitingforamachinecycle.*/

  53. }

  54. /**

  55. *@briefStopmeasuretime.

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

  57. *@returnProgramruntime(unit:us).

  58. */

  59. __STATIC_INLINEdoubleMeasureTimeStop(uint32_tclock)

  60. {

  61. uint32_tcount=SysTick->VAL;/*Readthecountervalue.*/

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

  63. doubletime=0.0;

  64. if(clock>0)

  65. {

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

  67. }

  68. returntime;

  69. }

  70. #ifdef__cplusplus

  71. }

  72. #endif

  73. #endif/*__MEASURETIME_H*/


main.c文件

  1. /**

  2. ******************************************************************************

  3. *@filemain.c

  4. *@authorXinLi

  5. *@versionv1.0

  6. *@date24-October-2017

  7. *@briefMainprogrambody.

  8. ******************************************************************************

  9. *@attention

  10. *

  11. *

    Copyright©2017XinLi

  12. *

  13. *Thisprogramisfreesoftware:youcanredistributeitand/ormodify

  14. *itunderthetermsoftheGNUGeneralPublicLicenseaspublishedby

  15. *theFreeSoftwareFoundation,eitherversion3oftheLicense,or

  16. *(atyouroption)anylaterversion.

  17. *

  18. *Thisprogramisdistributedinthehopethatitwillbeuseful,

  19. *butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof

  20. *MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe

  21. *GNUGeneralPublicLicenseformoredetails.

  22. *

  23. *YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense

  24. *alongwiththisprogram.Ifnot,see.

  25. *

  26. ******************************************************************************

  27. */

  28. /*Headerincludes-----------------------------------------------------------*/

  29. #include"main.h"

  30. #include"MeasureTime.h"

  31. /*Macrodefinitions---------------------------------------------------------*/

  32. /*Typedefinitions----------------------------------------------------------*/

  33. /*Variabledeclarations-----------------------------------------------------*/

  34. /*Variabledefinitions------------------------------------------------------*/

  35. static__IOdoublerunTime=0.0;

  36. /*Functiondeclarations-----------------------------------------------------*/

  37. __STATIC_INLINEvoiddelay_1us(void);

  38. /*Functiondefinitions------------------------------------------------------*/

  39. /**

  40. *@briefMainprogram.

  41. *@paramNone.

  42. *@returnNone.

  43. */

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在这篇文章中,小编将对PLC的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: PLC 模块化 程序

开关电源(SMPS)凭借高效、小型化的优势,广泛应用于电子设备中。但开关电源在工作时,因高频开关动作、元器件特性等因素,容易产生噪声。这些噪声不仅会影响自身性能,还可能干扰周边电子设备,因此准确测量开关电源中的噪声至关重...

关键字: 开关电源 噪声 测量

高海拔地区通常指海拔 3000 米以上区域,其环境与平原地区差异显著。最突出变化是大气压力和氧气含量降低,海拔每升高 1000 米,大气压力约下降 12kPa,氧气含量也相应减少。如青藏高原平均海拔超 4000 米,氧气...

关键字: 氧气 测量 高海拔地区

对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一。一般是优化了代码的尺寸,就会带来执行时间的增加;如果优化了程序的执行速度,通常会带来代码增加的副作用。很难鱼与熊掌兼得,只能在...

关键字: 单片机 程序

一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,必须选择合适的算法和数据结构。

关键字: CPU 程序 缓存

涡轮流量计是一种广泛用于测量液体和气体流量的仪器,它基于涡轮叶片的旋转来测量流体的速度并计算出流量。这种类型的流量计在工业、化工、石油、天然气、水处理和许多其他领域都得到了广泛的应用。然而,要确保涡轮流量计的准确性和可靠...

关键字: 涡轮流量计 涡轮叶片 测量

液位变送器是一种常见的工业自动化装置,用于测量液体高度或容器中的液体体积。它广泛应用于石油化工、食品加工、水处理等领域,在生产过程中起到重要的监测和控制作用。本文将介绍液位变送器的基本原理、应用设计步骤以及注意事项,帮助...

关键字: 液位变送器 工业自动化 测量

仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。

关键字: 单片机 仿真器 程序
关闭