方法一:
为了保证在MDK中读取正确的程序运行时间,必须对仿真器的跟踪项进行设置。
以ULink2为例:
(1)在工程的“ Option for Target ..”目标选项界面中,选择标签“Debug”,进行调试设置界面,选择使用“Cortex-M3-ULIK2”作为仿真器,然后点击右侧的“Settings”按键,进入ULINK设置界面。
(2)点击标签“Trace”进入跟踪设置界面,将“Core Clock:”右侧的编辑区输入你的CPU的频率,例如你的实际CPU运行频率为72MHz。
(3)“Core Clock”的值决定MDK以什么频率来计算指令周期,因为“Core Clock”的默认值为10MHz,因此如果不修改这个值的话,MDK计算每条指令的运行时间是按10MHz频率来计算的。只有修改为实际使用的频率值,才能得到正确的指令周期。
(我用的是芯片型号: stm32f100CB 它的系统时钟为24MHZ)
(4)回到kei 调式界面,可在Keil调试时左边,看到Proect Workspace下的Internal 看到sec即是时间,执行断点调试,即可计算时间了。
开始 执行写flash 前: 注意时间为Internal ->sec :2.13051933
执行完flash 写命令后,注意时间为Internal ->sec :2.15888279
比较一下前后差值: 即为写flash的时间:0.02836346s= 28.3546ms !!!
方法二:通过示波器查看;(我用JTAG 没有实时跟踪语句执行时间,可以用这种方法)
在测试语句先后加上 置位某一管脚 电平的方法 ,通过设置断点,示波器捕捉 高电平 的持续时间---如上图 代码部分
关键字:STM32 JLINK ULINK JTAG 执行时间
引用地址:
STM32:如何用JLINK ULINK JTAG 查看 KEIL /MDK 某条指令执行时间
推荐阅读最新更新时间:2024-03-16 16:22
STM32低功耗定时器(LPTIM)有哪些独特功能
开发低功耗产品,我们会比较关注整个系统的功耗问题。那么,LPTIM低功耗定时器你有关注吗? 1写在前面 在早些年,可能较少听见LPTIM这个名词。随着低功耗产品需求越来越严格,MCU厂商就推出了针对低功耗应用的LPTIM定时器。 定时器是我们常见的一种外设,之所以这么常见,原因在于定时器的用途非常广泛。 在STM32所有MCU中都配有定时器,那么你有关注、对比过各系列、各型号MCU中定时器的差异吗? 2 哪些STM32配有LPTIM定时器? 在STM32中,相对较新的MCU部分型号配有LPTIM定时器。 比如:STM32F7、H7高性能MCU,STM32L0、L4低功耗MCU,以及新推出的G0、G4系列中都配有这种LPTI
[单片机]
stm32的内存分布
一、MDK下的概念 1)Code:代码段,存放程序的代码部分。 2)RO-data:只读数据段,存放定义的常量。 3)RW-data:读写数据段,存放初始化为非0值的全局变量和静态变量。 4)ZI-data:零数据段,存放未初始化及初始化为0的全局变量和静态变量。 所以在stm32中:flash的容量是前三项相加(RW-data的初始值也要存在flash里),RAM的容量是后两项相加等。 static变量(函数内静态局部变量和函数外静态全局变量)初始化的、未初始化的分别在RW-data、ZI-data; 全局变量初始化的、未初始化的分别在RW-data、ZI-data; 局部变量(函数内)在栈段,动态分配的空间在堆中,
[单片机]
stm32的IAP升级小概率跑飞问题
用IAP技术进行单片机的自动升级,官方有源码,一般根据需求修改。 比如,因为我们的产品遍布各处,不可能让施工人员一个个去按按键触发升级,所以串口命令触发升级的方式明显更符合实际。以及Ymodem兼容性不好的原因,我们也换成了自己的协议。 做了大半个月,出现了一个怪象。 IAP下载升级包,100%时跳转APP,APP显示软件版本号,这是正常流程。 但是我们还有个异常和强度测试,在升级的各个阶段不停地拔电复位,看最终是否能升级成功。 同事反应,有时下载100%了,APP没显示版本号,而是又去从0%重新升级了,不停循环,但是重新上电后就一次性升级跳转成功了。一天测试数百次只会出现一次,是小概率事件。复现时,我留意了现象,是APP没正常运
[单片机]
STM32 串口中断接收数据
#include stm32f10x.h /*********************************************************************** ***********************************************************************/ void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void delay(vu32 nCount) { for(; nCount != 0; nCount--); }
[单片机]
STM32的四种输出模式
1、普通推挽输出(GPIO_Mode_Out_PP): 使用场合:一般用在0V和3.3V的场合。线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流。 使用方法:直接使用 输出电平:推挽输出的低电平是0V,高电平是3.3V。 2、普通开漏输出(GPIO_Mode_Out_OD): 使用场合:一般用在电平不匹配的场合,如需要输出5V的高电平。 使用方法:就需要再外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式, 当输出高组态时,由上拉电阻和电源向外输出5V的电压。 输出电平:在开漏输出模式时,如果输出为0,低电平,则使N_MOS 导通,使输 出接地。若控制输出为1(无法直接输出高电平),则
[单片机]
DFSDM模块的配置
1、引言 客户在使用 STM32H743 的 DFSDM 模块时,配置有误。于是协助客户按照下面的方法进行配置并分享之。 2、参数的计算 使用 NUCLEO-H743 开发板进行测试。由于客户需要 16KHz 音频数据, 24bits 的音频数据,因此配置如下。 PDMMic - PDM data - 滤波器类型 - 过采样率 Fosr(滤波器)- 过采样率 Isor(积分器)- 右移位器 - 偏移补偿 - 采样数据 Clock out (CKOUT)的计算 Fs= Fclockout/( Fosr*Iosr) Fs= 16kHz 音频数据 Fosr:滤波器过采样率,也就是抽取率,在这里取 128 Iosr:积分器过采样率,在
[单片机]
STM32与上位机串口通讯的学习笔记(简明的数据帧设计方法)
最近因为项目需要,需要做一个STM32和Windows的串口通讯协议来交换数据,本着追求极致的心态,来讨论一下简明的数据帧的设计方法。 ##数据的传输方式 对于很多单片机初学者而言,可能他们接触到串口 首先想到的就是通过串口打印字符串,然后就会很理所当然的想到了用“打印”的方式来传输数据。 比如我们需要传输一个float型的数据value,可能小白们首先会想到的方式就是串口重定向printf然后像下面这样把数据传输过去 printf( %f ,&value); 但是实际上,对于程序之间的交流,使用字符串打印这样的方式是非常浪费传输数据的,因为假设这个浮点数据为1234.567占了8个字符(小数点也占一位) 所以用字
[单片机]
基于STM32单片机的RFID和云平台仓库管理系统设计
一.系统设计 通过STM32单片机进行主控,通过RFID检测刷卡状态 ,光电检测模块检测存货区域,检测到的数据通过ESP01S上传到上位机端进行显示。 图1 系统框图 二.硬件设计 本设计所采用的STM32F103C8T6是以Cortex-3为核心的单片机,使用光电模块进行光电检测,用RFID识别感应并解读信息,检测到的数据会通过串口发送到ESP01S,再发送到上位机端进行显示和监控。 图2 硬件电路 三.软件设计 系统在完成系统初始化后就开始通过IC卡感应模块检测存货与取货状态,检测到的信息通过ESP01S通信模块上传,通过光电识别模块检测判断存货区域。其中若检测到取货刷卡且在区域一,则显示区域1货物减1,否则显示区域2
[单片机]