资料介绍
单片机编程者需要知道自己的程序需要花费多长时间、while周期是多少、delay延时是否真如函数功能描述那样精确延时。很多时候,我们想知道这些参数,但是由于懒惰或者没有简单的办法,将这件事推到“明天”。笔者提出了一种简便的测试方法,可以解决这些问题。测试代码的运行时间的思路:使用单片机内部定时器,在待测程序段的开始启动定时器,在待测程序段的结尾关闭定时器。为了测量的准确性,要进行多次测量,并进行平均取值。借助示波器的方法是:在待测程序段的开始阶段使单片机的一个GPIO输出高电平,在待测程序段的结尾阶段再令这个GPIO输出低电平。用示波器通过检查高电平的时间长度,就知道了这段代码的运行时间。显然,借助于示波器的方法更为简便。以下内容为这两种方案的实例,以STM32为测试平台。如果读者是在另外的硬件平台上测试,实际也不难,思路都是一样的,自己可以编写对应的测试代码。借助示波器方法的实例Delay_us函数使用STM32系统滴答定时器实现#include "systick.h"/* SystemFrequency / 1000 1ms中断一次* SystemFrequency / 100000 10us中断一次* SystemFrequency / 1000000 1us中断一次*/#define SYSTICKPERIOD 0.000001#define SYSTICKFREQUENCY (1/SYSTICKPERIOD)/*** @brief 读取SysTick的状态位COUNTFLAG* @param 无* @retval The new state of USART_FLAG (SET or RESET).*/static FlagStatus SysTick_GetFlagStatus(void){if(SysTick->CTRL&SysTick_CTRL_COUNTFLAG_Msk){return SET;}else{return RESET;}}/*** @brief 配置系统滴答定时器 SysTick* @param 无* @retval 1 = faiLED, 0 = successful*/uint32_t SysTick_Init(void){/* 设置定时周期为1us */if (SysTick_Config(SystemCoreClock / SYSTICKFREQUENCY)){/* Capture error */return (1);}/* 关闭滴答定时器且禁止中断 */SysTick->CTRL &= ~ (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);return (0);}/*** @brief us延时程序,10us为一个单位* @param* @arg nTime: Delay_us( 10 ) 则实现的延时为 10 * 1us = 10us* @retval 无*/void Delay_us(__IO uint32_t nTime){/* 清零计数器并使能滴答定时器 */SysTick->VAL = 0;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;for( ; nTime > 0 ; nTime--){/* 等待一个延时单位的结束 */while(SysTick_GetFlagStatus() != SET);}/* 关闭滴答定时器 */SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;}检验Delay_us执行时间中用到的GPIO(gpio.h、gpio.c)的配置#ifndef __GPIO_H#define __GPIO_H#include "stm32f10x.h"#define LOW 0#define HIGH 1/* 带参宏,可以像内联函数一样使用 */#define TX(a) if (a) \GPIO_SetBits(GPIOB,GPIO_Pin_0);\else \GPIO_ResetBits(GPIOB,GPIO_Pin_0)void GPIO_Config(void);#endif#include "gpio.h"/*** @brief 初始化GPIO* @param 无* @retval 无*/void GPIO_Config(void){/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启LED的外设时钟*/RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);}在main函数中检验Delay_us的执行时间#include "systick.h"#include "gpio.h"/**
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- AN021 测量MCU代码运行时间的几种方法
- 实用 | 获取单片机代码运行时间的方法
- 利用定时器实现51单片机返回上电运行时间功能
- 基于单片机的PCB设计源代码下载 45次下载
- 单片机基础及应用:单片机并行存储器扩展资料下载
- 简析比较器的原理及应用资料下载
- 简析555电压检测电路资料下载
- 简析运放并联的可行性资料下载
- 单片机程序到底是如何运行的?资料下载
- 简析三种IGBT驱动电路和保护方法资料下载
- 简析晶振振荡电路的设计资料下载
- 单片机应用测试内容及实现方法资料下载
- 单片机仅靠CPU和内存是无法运行的!资料下载
- 如何才能获取单片机代码运行的时间详细方法说明
- C语言教程之显示程序运行时间 0次下载
- ups主机选购方法,选择电池运行时间满足 170次阅读
- 如何保证它们容器运行时的安全? 701次阅读
- JVM运行时数据区之堆内存 710次阅读
- 正常运行时间保护底线 1063次阅读
- 获取STM32代码运行时间的技巧 3062次阅读
- 什么是Kubernetes容器运行时CRI 1548次阅读
- 使用STM32定时器测量程序执行时间的方法详解 8518次阅读
- 如何最大限度地延长无线传感器的运行时间 1283次阅读
- 读出S7-1500 CPU运行时间的几种方式 3351次阅读
- 利用StopWatch监控Java代码运行时间和分析性能 2902次阅读
- 详解单片机复位电路的作用及设计 1w次阅读
- 电机运行时间进行排列 是分为两个部分来完成这个程序的设计的 7245次阅读
- 如何缩短Vivado的运行时间 1.4w次阅读
- 基于STM32单片机通过使用宏assert_param来实现运行时间检测 1458次阅读
- 如何用SysTick实现测量程序运行时间 6083次阅读
下载排行
本周
- 1DC电源插座图纸
- 0.67 MB | 3次下载 | 免费
- 2AN-1267: 使用ADSP-CM408F ADC控制器的电机控制反馈采样时序
- 1.41MB | 3次下载 | 免费
- 3AN158 GD32VW553 Wi-Fi开发指南
- 1.51MB | 2次下载 | 免费
- 4AN148 GD32VW553射频硬件开发指南
- 2.07MB | 1次下载 | 免费
- 5AN111-LTC3219用户指南
- 84.32KB | 次下载 | 免费
- 6AN153-用于电源系统管理的Linduino
- 1.38MB | 次下载 | 免费
- 7AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下载 | 免费
- 8SM2018E 支持可控硅调光线性恒流控制芯片
- 402.24 KB | 次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 450次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 138次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 130次下载 | 免费
- 4使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 5美的电磁炉维修手册大全
- 1.56 MB | 24次下载 | 5 积分
- 6如何正确测试电源的纹波
- 0.36 MB | 18次下载 | 免费
- 7感应笔电路图
- 0.06 MB | 10次下载 | 免费
- 8万用表UT58A原理图
- 0.09 MB | 9次下载 | 5 积分
总榜
- 1matlab软件下载入口
- 未知 | 935121次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233088次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73810次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65988次下载 | 10 积分
评论
查看更多