在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用SysTick實(shí)現(xiàn)測(cè)量程序運(yùn)行時(shí)間

算法&編程學(xué)院 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師3 ? 2018-05-09 14:07 ? 次閱讀

在實(shí)際的項(xiàng)目開發(fā)過程中,常常遇到需要得到一段代碼的運(yùn)行時(shí)間,通常的方法是用示波器來測(cè)量,這篇博文將用SysTick來實(shí)現(xiàn)精確測(cè)量程序運(yùn)行的時(shí)間。STM32F4的內(nèi)核定時(shí)器SysTick是一個(gè)24位的定時(shí)器,需要注意最大的測(cè)量時(shí)間。

如何用SysTick實(shí)現(xiàn)測(cè)量程序運(yùn)行時(shí)間

1,開發(fā)環(huán)境

1,固件庫:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0

2,編譯器:ARMCC V5.06

3,IDE:Keil uVision5

4,操作系統(tǒng)Windows 10 專業(yè)版

2,程序源碼

MeasureTime.h文件

[cpp] view plain copy/**

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

* @file MeasureTime.h

* @author XinLi

* @version v1.0

* @date 24-October-2017

* @brief Measure program run time module.

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

* @attention

*

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

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see 《https://www.gnu.org/licenses/》。

*

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

*/

#ifndef __MEASURETIME_H

#define __MEASURETIME_H

#ifdef __cplusplus

extern “C” {

#endif

/* Header includes -----------------------------------------------------------*/

#include “stm32f4xx.h”

/* Macro definitions ---------------------------------------------------------*/

/* Type definitions ----------------------------------------------------------*/

/* Variable declarations -----------------------------------------------------*/

/* Variable definitions ------------------------------------------------------*/

/* Function declarations -----------------------------------------------------*/

/* Function definitions ------------------------------------------------------*/

/**

* @brief Start measure time.

* @param None.

* @return None.

*/

__STATIC_INLINE void MeasureTimeStart(void)

{

SysTick-》CTRL |= SysTick_CLKSource_HCLK; /* Set the SysTick clock source. */

SysTick-》LOAD = 0xFFFFFF; /* Time load (SysTick-》 LOAD is 24bit)。 */

SysTick-》VAL = 0xFFFFFF; /* Empty the counter value. */

SysTick-》CTRL |= SysTick_CTRL_ENABLE_Msk; /* Start the countdown. */

__nop(); /* Waiting for a machine cycle. */

}

/**

* @brief Stop measure time.

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

* @return Program run time(unit: us)。

*/

__STATIC_INLINE double MeasureTimeStop(uint32_t clock)

{

uint32_t count = SysTick-》VAL; /* Read the counter value. */

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

double time = 0.0;

if(clock 》 0)

{

time = (double)(0xFFFFFF - count) / (double)clock; /* Calculate program run time. */

}

return time;

}

#ifdef __cplusplus

}

#endif

#endif /* __MEASURETIME_H */

main.c文件

[cpp] view plain copy/**

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

* @file main.c

* @author XinLi

* @version v1.0

* @date 24-October-2017

* @brief Main program body.

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

* @attention

*

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

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see 《https://www.gnu.org/licenses/》。

*

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

*/

/* Header includes -----------------------------------------------------------*/

#include “main.h”

#include “MeasureTime.h”

/* Macro definitions ---------------------------------------------------------*/

/* Type definitions ----------------------------------------------------------*/

/* Variable declarations -----------------------------------------------------*/

/* Variable definitions ------------------------------------------------------*/

static __IO double runTime = 0.0;

/* Function declarations -----------------------------------------------------*/

__STATIC_INLINE void delay_1us(void);

/* Function definitions ------------------------------------------------------*/

/**

* @brief Main program.

* @param None.

* @return None.

*/

int main(void)

{

for(;;)

{

MeasureTimeStart();

delay_1us();

runTime = MeasureTimeStop(84);

}

}

/**

* @brief One microsecond delay.

* @param None.

* @return None.

*/

__STATIC_INLINE void delay_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();

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32F4
    +關(guān)注

    關(guān)注

    3

    文章

    197

    瀏覽量

    28873
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    13513
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何縮短Vivado的運(yùn)行時(shí)間

    在Vivado Implementation階段,有時(shí)是有必要分析一下什么原因?qū)е?b class='flag-5'>運(yùn)行時(shí)間(runtime)過長,從而找到一些方法來縮短運(yùn)行時(shí)間
    的頭像 發(fā)表于 05-29 14:37 ?1.5w次閱讀
    如何縮短Vivado的<b class='flag-5'>運(yùn)行時(shí)間</b>

    獲取單片機(jī)運(yùn)行時(shí)間

    測(cè)試代碼的運(yùn)行時(shí)間的兩種方法 使用單片機(jī)內(nèi)部定時(shí)器,在待測(cè)程序段的開始啟動(dòng)定時(shí)器,在待測(cè)程序段的結(jié)尾關(guān)閉定時(shí)器。為了測(cè)量的準(zhǔn)確性,要進(jìn)行多次測(cè)量
    的頭像 發(fā)表于 08-26 20:26 ?2137次閱讀
    獲取單片機(jī)<b class='flag-5'>運(yùn)行時(shí)間</b>

    請(qǐng)問6747如何測(cè)量代碼運(yùn)行時(shí)間

    1. 我想用片上的硬件定時(shí)器的方法測(cè)量代碼運(yùn)行時(shí)間,使用timer,加頭文件:csl_timer.h,但是6747沒有csl,我下載了6747的cslr package,發(fā)現(xiàn)里面也沒有
    發(fā)表于 07-28 10:25

    請(qǐng)問stm32如何利用通用定時(shí)器實(shí)現(xiàn)函數(shù)運(yùn)行時(shí)間精確測(cè)量

    請(qǐng)問stm32如何利用通用定時(shí)器實(shí)現(xiàn)函數(shù)運(yùn)行時(shí)間精確測(cè)量
    發(fā)表于 12-01 07:58

    測(cè)量嵌入式軟件運(yùn)行時(shí)間的方法

    關(guān)注、星標(biāo)公眾號(hào),不錯(cuò)過精彩內(nèi)容整理:黃工素材來源:最后一個(gè)Bug程序運(yùn)行時(shí)間,對(duì)一個(gè)系統(tǒng)比較重要。有的地方要求精確延時(shí)Nus,有的地方要求程序運(yùn)行時(shí)間不能超過Nus。所以,今天給大
    發(fā)表于 12-21 08:21

    介紹幾種測(cè)量單片機(jī)程序運(yùn)行時(shí)間的方法

      有時(shí)我們需要知道自己的單片機(jī)程序需要花費(fèi)多長時(shí)間,delay延時(shí)的精確時(shí)間等。今天來介紹幾種測(cè)量程序運(yùn)行時(shí)間的方法。  1.單片機(jī)內(nèi)部定
    發(fā)表于 03-23 14:55

    C語言教程之顯示程序運(yùn)行時(shí)間

    C語言教程之顯示程序運(yùn)行時(shí)間,很好的C語言資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-25 16:09 ?0次下載

    基于STM32單片機(jī)通過使用宏assert_param來實(shí)現(xiàn)運(yùn)行時(shí)間檢測(cè)

    固件函數(shù)庫通過檢查庫函書的輸入來實(shí)現(xiàn)運(yùn)行時(shí)間錯(cuò)誤偵測(cè)。通過使用宏assert_param來實(shí)現(xiàn)運(yùn)行時(shí)間檢測(cè)。所有要求輸入?yún)?shù)的函數(shù)都使用這個(gè)宏。它可以檢查輸入?yún)?shù)是否在允許的范圍之內(nèi)。
    發(fā)表于 10-22 15:12 ?1557次閱讀
    基于STM32單片機(jī)通過使用宏assert_param來<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>運(yùn)行時(shí)間</b>檢測(cè)

    電機(jī)運(yùn)行時(shí)間進(jìn)行排列 是分為兩個(gè)部分來完成這個(gè)程序的設(shè)計(jì)的

    前幾天有個(gè)學(xué)員咨詢一個(gè)程序設(shè)計(jì)的問題,程序的控制要求如下:需要控制5臺(tái)電機(jī)的運(yùn)行,每臺(tái)電機(jī)運(yùn)行時(shí)需要記錄運(yùn)行時(shí)間,電機(jī)啟動(dòng)
    的頭像 發(fā)表于 07-19 08:57 ?7739次閱讀
    電機(jī)<b class='flag-5'>運(yùn)行時(shí)間</b>進(jìn)行排列 是分為兩個(gè)部分來完成這個(gè)<b class='flag-5'>程序</b>的設(shè)計(jì)的

    如何高效測(cè)量ECU的運(yùn)行時(shí)間

    ,最終可能會(huì)引起運(yùn)行時(shí)間方面的問題。這在項(xiàng)目后期需要大量的時(shí)間和金錢來解決。如果不能掌握系統(tǒng)的運(yùn)行狀態(tài),則很難發(fā)現(xiàn)系統(tǒng)內(nèi)缺陷的根源。 解決方案 將TA軟件工具套件與VX1000測(cè)量標(biāo)定
    的頭像 發(fā)表于 10-28 11:05 ?2506次閱讀

    淺析STM32代碼運(yùn)行時(shí)間的技巧

    前言 ????測(cè)試代碼的運(yùn)行時(shí)間的兩種方法: 使用單片機(jī)內(nèi)部定時(shí)器,在待測(cè)程序段的開始啟動(dòng)定時(shí)器,在待測(cè)程序段的結(jié)尾關(guān)閉定時(shí)器。為了測(cè)量的準(zhǔn)確性,要進(jìn)行多次
    的頭像 發(fā)表于 11-09 09:52 ?4228次閱讀
    淺析STM32代碼<b class='flag-5'>運(yùn)行時(shí)間</b>的技巧

    幾種測(cè)量程序運(yùn)行時(shí)間的方法

    如果你的程序沒有多余的定時(shí)器可用,那么可以借助外部工具來測(cè)量。在待測(cè)程序開始時(shí)將一個(gè)GPIO置高,在待測(cè)程序結(jié)束時(shí)將GPIO置低。用示波器或者其他設(shè)備
    發(fā)表于 08-03 14:35 ?3780次閱讀

    AN021 測(cè)量MCU代碼運(yùn)行時(shí)間的幾種方法

    AN021 測(cè)量MCU代碼運(yùn)行時(shí)間的幾種方法
    發(fā)表于 02-27 18:23 ?0次下載
    AN021 <b class='flag-5'>測(cè)量</b>MCU代碼<b class='flag-5'>運(yùn)行時(shí)間</b>的幾種方法

    ch32v307記錄程序運(yùn)行時(shí)間

    ch32v307記錄程序運(yùn)行時(shí)間程序開發(fā)中,很重要的一項(xiàng)任務(wù)就是對(duì)程序運(yùn)行時(shí)間進(jìn)行評(píng)估。對(duì)于大型的
    的頭像 發(fā)表于 08-22 15:53 ?1227次閱讀

    三菱plc累計(jì)運(yùn)行時(shí)間怎么編程

    具有重要意義。本文將詳細(xì)介紹如何使用三菱PLC編程實(shí)現(xiàn)累計(jì)運(yùn)行時(shí)間的統(tǒng)計(jì)功能。 一、概述 累計(jì)運(yùn)行時(shí)間是指設(shè)備或系統(tǒng)在一定時(shí)間內(nèi)的總運(yùn)行時(shí)間
    的頭像 發(fā)表于 06-20 11:31 ?3450次閱讀
    主站蜘蛛池模板: 亚洲综合色dddd26 | 色午夜视频 | 女人被狂躁视频网站免费 | 国产精品人成在线播放新网站 | 欧美一区二区视频 | 天天狠操 | 欧美美女福利视频 | 日本特黄a级高清免费酷网 日本特黄色大片 | 色媚网| 午夜小视频免费 | 久久国产乱子伦精品免费午夜 | 在线你懂的网址 | 黄色在线网站 | 噜噜噜噜私人影院 | 欧美黑粗 | 日本媚薬痉挛在线观看免费 | 欧美操bb | 欧美精品啪啪 | 777人体粉嫩u美图 | 久久综合狠狠综合久久综合88 | 黄网站观看 | 国产人成精品免费视频 | 一区视频在线播放 | 精品三级内地国产在线观看 | 欧美亚洲另类在线观看 | 羞羞影院男女午夜爽爽影视 | 欲香欲色 | 天天色成人 | 色视频在线观看网站 | 黄色软件合集 | 韩国三级视频网站 | 91三级视频| 免费人成年短视频在线观看免费网站 | 免费的黄色毛片 | 日本69sex护士www| 日本免费色 | 国产精品一区二区三区四区 | 国产网红主播chinese | 天天操夜夜操免费视频 | 完整日本特级毛片 | 天天碰夜夜操 |