STM32笔记:使用SysTick测量程序的运行时间

发布者:咖啡狐狸最新更新时间:2018-07-17 来源: eefocus关键字:STM32  SysTick  测量程序  运行时间 手机看文章 扫描二维码
随时随地手机看文章

本实验用来测量延时函数(如下)的运行时间


void Delay(__IO u32 nCount)  


{

for(; nCount != 0; nCount--);


//SysTick.c

#include "SysTick.h"

 

__IO u32 TimingDelay = 0;

 

void SysTick_Init(void)

{

/* SystemFrequency / 1000       1ms中断一次

* SystemFrequency / 100000   10us中断一次 

* SystemFrequency / 1000000    1us中断一次

*/

// if (SysTick_Config(SystemFrequency / 100000)) // ST3.0.0库版本

if (SysTick_Config(SystemCoreClock / 1000000)) // ST3.5.0库版本

/* Capture error */ 

while (1);

}

// 关闭滴答定时器 

SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;

}

 

 

 

 void Delay(__IO u32 nCount)  

{

for(; nCount != 0; nCount--);

/*

 * 函数名:TimingDelay_Count

 * 描述  :获取节拍程序

 * 输入  :无

 * 输出  :无

 * 调用  :在SysTick中断函数SysTick_Handler()调用

 */  

void TimingDelay_Count(void)

{

 

TimingDelay++;

}

//stm32f10x_it.c 

/**

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

  * @file    Project/STM32F10x_StdPeriph_Template/stm32f10x_it.c 

  * @author  MCD Application Team

  * @version V3.5.0

  * @date    08-April-2011

  * @brief   Main Interrupt Service Routines.

  *          This file provides template for all exceptions handler and 

  *          peripherals interrupt service routine.

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

  * @attention

  *

  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS

  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE

  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY

  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING

  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE

  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

  *

  *

© COPYRIGHT 2011 STMicroelectronics

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

  */

 

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x_it.h"

 

/** @addtogroup STM32F10x_StdPeriph_Template

  * @{

  */

 

/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/

 

/* Private variables ---------------------------------------------------------*/

 

 

/* Private function prototypes -----------------------------------------------*/

 

extern void TimingDelay_Count(void);   //外部函数

 

/* Private functions ---------------------------------------------------------*/

 

/******************************************************************************/

/*            Cortex-M3 Processor Exceptions Handlers                         */

/******************************************************************************/

 

/**

  * @brief  This function handles NMI exception.

  * @param  None

  * @retval None

  */

void NMI_Handler(void)

{

}

 

/**

  * @brief  This function handles Hard Fault exception.

  * @param  None

  * @retval None

  */

void HardFault_Handler(void)

{

  /* Go to infinite loop when Hard Fault exception occurs */

  while (1)

  {

  }

}

 

/**

  * @brief  This function handles Memory Manage exception.

  * @param  None

  * @retval None

  */

void MemManage_Handler(void)

{

  /* Go to infinite loop when Memory Manage exception occurs */

  while (1)

  {

  }

}

 

/**

  * @brief  This function handles Bus Fault exception.

  * @param  None

  * @retval None

  */

void BusFault_Handler(void)

{

  /* Go to infinite loop when Bus Fault exception occurs */

  while (1)

  {

  }

}

 

/**

  * @brief  This function handles Usage Fault exception.

  * @param  None

  * @retval None

  */

void UsageFault_Handler(void)

{

  /* Go to infinite loop when Usage Fault exception occurs */

  while (1)

  {

  }

}

 

/**

  * @brief  This function handles SVCall exception.

  * @param  None

  * @retval None

  */

void SVC_Handler(void)

{

}

 

/**

  * @brief  This function handles Debug Monitor exception.

  * @param  None

  * @retval None

  */

void DebugMon_Handler(void)

{

}

 

/**

  * @brief  This function handles PendSVC exception.

  * @param  None

  * @retval None

  */

void PendSV_Handler(void)

{

}

 

/**

  * @brief  This function handles SysTick Handler.

  * @param  None

  * @retval : None

  */

void SysTick_Handler(void)

{

TimingDelay_Count();    //在SysTick.c文件里

 

}

 

/******************************************************************************/

/*                 STM32F10x Peripherals Interrupt Handlers                   */

/*  Add here the Interrupt Handler for the used peripheral(s) (PPP), for the  */

/*  available peripheral interrupt handler's name please refer to the startup */

/*  file (startup_stm32f10x_xx.s).                                            */

/******************************************************************************/

 

/**

  * @brief  This function handles PPP interrupt request.

  * @param  None

  * @retval None

  */

/*void PPP_IRQHandler(void)

{

}*/

 

/**

  * @}

  */ 

 

 

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/


//main.c

#include "stm32f10x.h"

#include "SysTick.h"

 

extern __IO u32 TimingDelay;

 

 

int main(void)

{

SysTick_Init();

 

SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;  //使能滴答定时器

Delay(10000);   

        SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;

 

}



0.00355199 - 0.00005228 = 0.00349971(s) 约等于DAB,与TimingDelay几乎一致。


关键字:STM32  SysTick  测量程序  运行时间 引用地址:STM32笔记:使用SysTick测量程序的运行时间

上一篇:STM32 中 SysTick时钟的配置
下一篇:STM32F0_SYSTICK在STM32CUBEMX中的设置

推荐阅读最新更新时间:2024-03-16 16:09

STM32学习笔记(5):通用定时器PWM输出
1.TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。 STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 1.1PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的(“110”为模式1,“111”为模式2)。模式1和
[单片机]
STM32F4学习笔记5——SysTick定时器
SysTick 定时器被捆绑在 NVIC 中,用于产生 SYSTICK 异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。 Cortex—M4处理器内部包含了一个简单的定时器,该定时器时钟源可以是内部时钟,或者外部时钟的,不过STCLK的具体来源由芯片设计者决定。SysTick定时器能产生
[单片机]
嵌入式-stm32学习:按键检测
bsp_key.h #ifndef __KEY_H #define __KEY_H #include stm32f4xx.h //引脚定义 /*******************************************************/ #define KEY1_PIN GPIO_Pin_0 //GPIO引脚号 #define KEY1_GPIO_PORT GPIOA //GPIO端口A #define KEY1_GPIO_CLK RCC_AHB1Periph_GPIOA //GPIO端口时钟 #define KEY2_
[单片机]
一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制
1 前言 直接存储器访问(Direct Memory Access),简称 DMA。DMA 是 CPU 一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需 CPU 干预,数据拷贝结束则通知 CPU 处理。 因此,大量数据拷贝时,使用 DMA 可以释放 CPU 资源。DMA 数据拷贝过程,典型的有: 内存— 内存,内存间拷贝 外设— 内存,如 uart、spi、i2c 等总线接收数据过程 内存— 外设,如 uart、spi、i2c 等总线发送数据过程 2 串口有必要使用 DMA 吗 串口(uart)是一种低速的串行 异步通信 ,适用于低速通信场景,通常使用的 波特率 小于或等于 115200bps。
[单片机]
STM32 USB学习笔记5
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library 承接前文,对于上层应用而言只剩下CDC类接口文件即usbd_cdc_interface,该文件主要为实现CDC类接口所用到的物理资源以及逻辑资源,需要参考通信设备通用串行总线类定义版本1.2以及PSTN设备通用串行总线通信类子类规范版本1.2,这两个文档都可以在USB组织官网上下载得到,首先看下usbd_cdc_interface.h文件,如下: /* Define to prevent recursive inclusion
[单片机]
<font color='red'>STM32</font> USB学习笔记5
STM32开发笔记78: 2种STOP模式的唤醒方法
单片机型号:STM32L053R8T6 前面已有多篇开发笔记详细阐述了STM32 STOP模式的进入和唤醒方法,如果自发唤醒一般选用RTC方法,其调用的程序如下: Target.EnableLowPower(); //使能超低功耗 Target.Rtc.EnterStopRtcMode(10); //进入低功耗,时间10秒 EnableLowPower使能了超低功耗。EnterStopRtcMode通过RTC方式进入STOP模式,后面的参数指定的是唤醒时间,也就是进入STOP模式后,10秒唤醒。 唤醒后做的事情还很多,最主要的是时钟变换,这在开发笔记STM32开发笔记74: STM32L0低功耗唤醒后的时
[单片机]
调试器不能连接到STM32的问题与解决办法
简介:很多人都碰到过调试器不能连接到STM32的问题,不管是IAR的J-Link还是Keil的ULink,或者是ST的ST-Link。出现这个问题时,调试软件会提示不能建立与Cortex-M3的连接,或提示不能下载程序,或提示找不到要调试的设备等。 这样的问题都是发生在调试那些可以在CPU不干预的时候自动运行的模块、或在调试低功耗模式的程序的时候。 所谓“可以在CPU不干预的时候自动运行的模块”包括:DMA、定时器、连续转换模式下的ADC、看门狗等模块。 这个问题的根源是: 1)调试器需要在RAM内执行一段程序,对Flash进行擦写操作,如果不停止这些自动运行的模块,它们会干扰程序在RAM中的执行,致使下载失败。比
[单片机]
开漏输出和推挽输出
概述 在STM32或者GD32中,普通的输出GPIO输出方式主要是开漏输出和推挽输出,下面我们开始讲解这2种模式的区别。 下图是GPIO内部的结构示意图。 在上图中,P-MOS带了一个⚪,说明是低电平导通。 上图是GPIO的示意图,有输入和输出,如果简化为输出,则如下所示。 模拟文件下载 https://download.csdn.net/download/qq_24312945/85250172 推挽输出 推挽输出的内部电路大概是下图这个样子,由一个P-MOS和一个N-MOS组合而成,同一时间只有一个管子能够进行导通。 当输出高电平时候,P-MOS导通,N-MOS截至,此时电源电流入R5。 当输出低电平时
[单片机]
开漏输出和推挽输出
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved