今天小编要和大家分享的是控制,MCU相关信息,接下来我将从如何获取单片机测试代码的运行时间,stm32图片这几个方面来介绍。

控制,MCU相关技术文章如何获取单片机测试代码的运行时间stm32图片

控制,MCU相关技术文章如何获取单片机测试代码的运行时间

单片机编程者需要知道自己的程序需要花费多长时间、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为一个单位

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查