历史上的今天
今天是:2024年10月06日(星期日)
2018年10月06日 | STM32_在线调试查看硬件程序运行时间的两种方法
2018-10-06 来源:eefocus
方法一:
为了保证在MDK中读取正确的程序运行时间,必须对仿真器的跟踪项进行设置。
以ULink2为例(如果使用的是J-LINK下载器或者ST-link下载器 原理一样,可做类比):
(1)在工程的“ Option for Target ..”目标选项界面中,选择标签“Debug”,进行调试设置界面,选择使用“Cortex-M3-ULIK2”作为仿真器,然后点击右侧的“Settings”按键,进入ULINK设置界面。

(2)点击标签“Trace”进入跟踪设置界面,将“Core Clock:”右侧的编辑区输入你的CPU的频率,例如你的实际CPU运行频率为72MHz,那么你就必须输入72Mhz。
(3)“Core Clock”的值决定MDK以什么频率来计算指令周期,因为“Core Clock”的默认值为10MHz,因此如果不修改这个值的话,MDK计算每条指令的运行时间是按10MHz频率来计算的。只有修改为实际使用的频率值,才能得到正确的指令周期。
(我用的是芯片型号: stm32f100CB 它的系统时钟为24MHZ,所以这里填写24Mhz,大部分的stm32F10x系列都能通过PLL跑到72Mhz,这里可以自行修改)

(4)点击kei 调式功能,可在Keil调试界面的左边栏,看到Proect Workspace下的Internal 看到sec即是时间,执行断点调试,即可计算时间了。
开始 执行写flash 前: 注意时间为Internal ->sec :2.13051933
执行完flash 写命令后,注意时间为Internal ->sec :2.15888279
比较一下前后差值: 即为写flash的时间:0.02836346s= 28.3546ms !!!

方法二:通过示波器查看;(我用JTAG 没有实时跟踪语句执行时间,可以用这种方法)
在测试语句先后加上 置位某一管脚 电平的方法 ,通过设置断点,示波器捕捉 高电平 的持续时间---如下图 代码部分

史海拾趣
|
我们现在需要建立一个 100个节点的无线网络, 这 100 个节点中有97个是现场的 无线数据模块,通过手机卡实现 无线上网,3个节点 是数据中心,分别接有一台 PC机(此PC机为固定IP), 然后 这97个 无线模块 分别 向一台 PC机发送数据. ...… 查看全部问答> |
|
谢谢关注! 我使用的板子是friendly arm 的micro2440a,因为要做nand boot启动,需要开发k9f2g08uom(每页2048byte,2048 block,每块64页)的驱动,目前碰到两个问题: 1,程序烧写不正确。使用sjf2440 软件烧写,然后读出,发现部分数据烧写部分不 ...… 查看全部问答> |
|
事情是这样的, 我原来在ce4.2上做的程序,对edit输入有限制,限制的方法是重载CEdit为CImputEdit类,在其中重载OnChar, 在把使用限制的edit定义处改为CImputEdit;是限制成功的. 现在我把程序拿到ce5上运行,发事Onchar函数没进去,,,,, 但退格等有些 ...… 查看全部问答> |
|
keil c 编程方面的问题 跪请好心人帮忙 100分酬谢是小 大恩难忘 我要用keil c 编一个火灾报警的程序。用的探测器是感温、气体探测器,就是检测到温度或着某种气体(像CO)超标后,蜂鸣器发出报警,LED背光、休眠指示灯闪烁。硬件有MCU,串口,键盘,锁存、地址,外扩RAM,蜂鸣器,背光、休眠指示灯,滤波电路,液 ...… 查看全部问答> |
|
我现在在写wince 下的USB摄像头驱动。开发板是S3C2410,摄像头是中星微301p.在网上看了很多资料,但是写出来的还是有问题。我已经把ZC0301P.dll,ZC0301P.reg,Platform.bib,放在了移动设备的windows下面。每次把摄像头插上去,就提示“输入此USB设 ...… 查看全部问答> |
|
我是专科的 快大三了 熟悉C语言和汇编 对系统底层和linux下的API编程比较了解 看过一个小的linux原码(0.11)的那个 想转学嵌入式但不知道怎么入手 学嵌入式要开发板的吧 那个ARM9 ...… 查看全部问答> |
|
经过前几期的了解,我已经实现了初步的人脸检测 同时试用板子也到期啦。。。哈哈 我实现了人脸图像的采集和处理 待会会在附件中上传我采集的图像! 下面我就介绍一下我的软件实现过程: 但是我这图片 ...… 查看全部问答> |
|
最近的一个STM32的应用需要进入低功耗,结果碰到一个问题很奇怪,流程如下: 1)通过WFI进入SLEEP模式,然后通过Systick来唤醒 2)通过调用库函数(如下)进入STOP模式,然后由外部电路通过一个外部中断引脚唤醒;唤醒后,重新初始化HSE和PLL ...… 查看全部问答> |




