LPC55s69开发板上程序运行时间测量方法咨询
计算LPC55s69上"Hello World"程序的运行时间方法
作为嵌入式新手,给你推荐三种易上手的实现方式,按操作复杂度排序:
方法一:借助IDE调试工具(最简单,无需改代码)
- 用LPC常用的MCUXpresso IDE打开工程,在
printf("Hello World\n");的前一行和后一行分别设置断点。 - 进入调试模式,运行到第一个断点时,记录调试窗口里的运行时间戳(一般在调试控制台或状态栏能找到)。
- 继续运行到第二个断点,再次记录时间戳,两个数值的差值就是程序运行的时间。
- 注意:这种方法会包含调试器的微小开销,但足够满足新手的测试需求。
方法二:用SysTick硬件定时器(代码实现,精度较高)
LPC55s69内置的SysTick定时器是CMSIS标准外设,无需额外复杂配置:
- 确认时钟配置:先在工程的
clock_config.c里找到SystemCoreClock的值(比如150MHz,即内核时钟频率),计算每个tick的时间:1/SystemCoreClock(150MHz下约6.67ns)。 - 在代码中添加计时逻辑:
#include "fsl_common.h" int main(void) { // 初始化串口、时钟等(你的原有初始化代码) BOARD_InitBootPeripherals(); BOARD_InitBootClocks(); uint32_t start, end, ticks; double time_us; // 记录起始tick值(SysTick是向下计数的) start = SysTick->VAL; // 执行要测试的代码 printf("Hello World\n"); // 记录结束tick值 end = SysTick->VAL; // 计算总tick数,处理溢出情况 if (start > end) { ticks = start - end; } else { ticks = SysTick->LOAD - end + start; } // 转换为微秒 time_us = ticks * (1000000.0 / SystemCoreClock); printf("Hello World运行时间:%.2f 微秒\n", time_us); while(1); } - 编译运行:烧录程序后,通过串口就能看到计算出的时间。
方法三:GPIO翻转+示波器(最准确,适合有硬件工具的场景)
如果你有示波器,这种方法能排除软件计数的误差:
- 初始化一个GPIO引脚为推挽输出模式(比如P0_0)。
- 在
printf("Hello World\n");执行前,把GPIO拉高;执行完成后,把GPIO拉低。 - 用示波器探针连接这个GPIO引脚,测量高电平的持续时长,就是程序的实际运行时间。
新手提示
- 确保串口初始化正确,否则
printf会阻塞,导致计时结果不准。 - 如果用SysTick计时,注意SysTick的溢出时间(默认配置下是1秒),如果你的Hello World运行时间超过1秒,要调整定时器重载值。
内容的提问来源于stack exchange,提问作者Aayush T
相关产品推荐
相关产品推荐

