1、首先打开main.c文件,在头写一个delay的延时方法,如下图。
2、然后在延时方法下面写出自定义设置系统时钟的方法,如下图。
3、然后就可以在入口程序中首先调用 设置系统时钟方法,传入对应的参数,先设置好系统时钟,然后再设置LED灯的点亮熄灭之间加入延时方法,如下图。
4、然后编译代码,下图中可以看出0错误,0警告,如下图。
5、编译成功之后,就可以将代码下载到STM32F407的开发板中观察实验现象了。
jlink仿真应该和实际执行是一样的。
仿真是7秒应该就是7秒了,至于为什么执行了7秒,看看pll设置是否正确吧。
在Keil运行时可以看时间。见图。但只有在软件仿真时可以。
在Options for Taget 'Taget 1'中,Debug插页里,点Use Similation见图一。
在进入Debug后,图二绿框中所示即运行的机器周期数(States)和时间(Sec),以μS为单位。
在调试仿真里,在你需要计算时间的程序两端设断点,然后比较两个断点下的系统时间
如果是用keil的话,可以按菜单上的debug进入调试模式,然后可以看到左边多了一个窗口,里面会显示当前各个寄存器、堆栈、PC指针的值,其中有一个项是sec,就是表示程序运行时间的。
想知道一条指令的执行时间,可以把PC指针指向这条指令,然后在下一条指令处设置断点,先按“reset”清零一下sec的值,再按“RUN”运行程序,从sec处就可以知道这条指令的运行时间了。
估计这是在软仿真的情况下看到的结果,这里的时间是指如果实际在MCU上运行这些代码,他基本上就已经运行了70秒这么长的时间了。
软仿真时,代码是在PC机上Keil软件中仿真运行,这时候的这个运行时间,和实际运行时间是不同的。因为实际的MCU相对于PC机来说,主频低很多,运行慢很多。所以时间和你感觉的不一致。
还有一个可能就是,在目标板设置中,设置的时钟晶振频率不对。
本文标签:keilstm32仿真程序运行时间