【经验】Silicon Labs 8位单片机EFM8BB2系列程序运行时间测试方法
SILICON LABS 8位单片机EFM8系列基于流行的8051核心,上手简单。并且在传统8051单片机的基础上加入了ADC、I2C、SPI等常用外设,包括Bsuy Bee、Laser Bee、Sleepy Bee、Universal Bee几大系列,广泛应用于各个行业。
在进行嵌入式开发的过程中,我们经常要对程序进行优化,以减少程序运行时间,在优化代码的过程中如果能得到各个函数的具体运行时间,将对我们的优化工作起到一个很好的量化作用。本文将以8位MCU EFM8BB21F16G为例,分享一下如何测试程序的运行时间。
1. 我们采用HFOSC0作为时钟源,将其8分频作为系统时钟使用。即系统时钟为24.5MHz/8= 3.062MHz
2. 我们开启Timer2(用于计算程序运行时间),Time时钟源采用系统时钟12分频,即3.062MHz/12=255.208kHz,周期为3.918us。模式设置为Mode0(16-bit autoreload),这样Timer2溢出的周期就是256.794ms,由于函数的执行过程几乎不会达到上百ms,所以我们这里无需再考虑Timer2的溢出情况(如需记录较长时间,请对Timer2的溢出中断进行计数),这样我们就相当于把Timer2设置成了一个16位的自由计数器。
3. 在需要测试的函数前后分别读取Timer2的数值,即TMR2L与TMR2H这两个寄存器的值,将两次得到的值做差则得到了此函数的运行时间。
举例如下:
测试如下函数的运行时间。
首先我们定义变量,如下:
然后,在函数运行前后记录时间,如下:
调试程序,我们在Simplicity Studio调试界面中可以看到:
由此我们得出程序运行时间为:8096*3.918us=31720.128us。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由黄昏提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
Silicon Labs 8位单片机EFM8BB31 SPI通信调试注意事项
Silicon Labs EFM8BB31是一款资源丰富,高效率,小体积的8位单片机,已被许多用户选用,被广泛应用于消费电子,精密仪器,电源管理,工业控制自动化,智能传感器,汽车控制,安防监控等领域。在开发过程中,经常使用到SPI通信,EFM8BB31支持3线或4线模式的SPI主模式和从模式,在调试SPI通信的过程,有哪些注意事项呢?本文将详细介绍。
设计经验 发布时间 : 2019-04-10
【经验】如何解决8位单片机EFM8BB21F16G串口通信不正常问题?
本文以Silicon Labs的8位单片机EFM8BB21F16G为例,介绍如何通过软件程序置位中断标志位,通过串口中断方式来解决清除前如果有数据到来会引起数据丢失并无法产生中断的方法。
设计经验 发布时间 : 2021-05-19
【经验】PCB布线技巧:8位单片机端口Crossbar功能的使用及配置
如果单片机自带Crossbar功能,只要软件配置调整一下各端口功能,PCB布线就会畅通。
设计经验 发布时间 : 2017-08-09
8位单片机EFM8的烧录器有哪些?
8位单片机EFM8系列采用C2调试接口,常见的烧录器有:1,官方的EFM8 STK、USB Debug Adapter、ToolStick。2,第三方的U-EC2/6、WizPro200EFM(支持EFM8和EFM32)等。
技术问答 发布时间 : 2016-10-25
8位单片机EFM8系列中芯片上的UID是什么?
UID是芯片中新加的全球唯一ID,即每个芯片的ID都是不一样的,EFM8系列的MCU上都包含此ID。有两类获取UID的方式,一种通过读取RAM的特定地址获得,一种通过读取Flash的特定地址获得。在早期引入此ID的MCU上(比如EFM8BB1/SB1/SB2)这个ID为32位,在芯片复位时(PC指针被复位至0之前)被复制至RAM中特定位置,用户程序可以读取其值。此位置的RAM仍然可以由用户使用。需要注意的是如果此位置被编译器分配了变量,那么当函数执行至main()时此位置的内容会被初始化代码覆盖。EFM8UB2的UID也是此类,但其位数为128位。在新的EFM8系列MCU上(比如EFM8BB3/LB1/UB1),UID位数为128位,存储在Flash上。
技术问答 发布时间 : 2017-05-05
【经验】8位MCU EFM8BB21通过软件置位中断标志位进入中断服务的方法
我们在嵌入式开发中常常会需要写中断服务程序,中断服务程序的运行需要触发中断条件,但有些中断条件不容易触发。本文以Silicon Labs的8位MCU EFM8BB21F16G为例,介绍如何通过软件置位中断标志位,强行产生相应中断,从而进入中断服务的方法。
设计经验 发布时间 : 2020-10-23
8位单片机EFM8LB11,既有I2C,也有SMBus,那么,I2C与SMBus的主要差别是什么?
SMBus和I2C的主要差别是与各种时序要求相关。下面列举最重要的方面:SMBus定义一个最小总线时钟频率FSMB,10KHz。I2C没有明确任何最小总线时钟频率。除了维持有效的总线吞吐量,该SMBus协议参数还可作为一个简单的检测总线空闲条件(除了或代替检测每个STOP条件)和实现比特位超时的方法。SMBus定义一个数据保持时间,即从SMBCLK下降沿之后,SMBDAT仍然必须维持至少300ns有效。这在I2C协议中定义的保持时间为0。SMBus时钟最大频率定义为100KHz。I2C提供多种不同速率模式操作,Standard模式最高频率达到100KHz,Fast模式为400KHz,Fast Plus为1MHz,而High-speed高达到3.4MHz。SMBus定义一个时钟低电平超时 TTIMEOUT,最大为35ms。I2C并没有明确指定任何超时限制。SMBus明确TLOW:SEXT,即SMBus从设备的累积时钟低扩展时间。I2C没有类似的规定。SMBus明确 TLOW:MEXT,即SMBus主设备的累积时钟低扩展时间。I2C没有类似的规定。
技术问答 发布时间 : 2017-05-05
【经验】Silicon Labs 8位单片机EFM8系列仿真接口C2硬件电路设计
EFM8系列MCU是Silicon Labs公司推出的一款多用途、小封装8位单片机,该系列MCU经过AEC-Q100认证,被广泛应用于光通信设备,消费电子,电机控制,照明系统,医疗器械等领域。EFM8系列与C8051F系列MCU都是采用C2接口进行程序的烧写和软件的调试,但是我们实际应用中,很多客户在设计C2接口时,由于设计的不当,导致无法调试烧写,本文将对C2接口设计和注意事项,进行介绍。
设计经验 发布时间 : 2019-04-12
【应用】Silicon labs 8位MCU EFM8BB31在工业水泵上的应用,可实现数据准确采集,满足处理速度的要求
水泵是输送液体或使液体增压的机械,水泵最常用的驱动方式是用电动机驱动。本方案采用Silicon Labs的8位单片机EFM8BB31做主控,此芯片集成了2个UART和最高通信速率为12Mbps的 SPI,可充分满足与外设产品的通信要求。 该系列MCU还集成有12位的ADC和多达四个 12 位DAC,可以实现对数据的准确采集,49MHz的主频、最高64KB的Flash,满足处理速度和程序的设即需求。
应用方案 发布时间 : 2020-02-16
【产品】Silicon Labs 8位单片机EFM8UB系列自带驱动,简化USB设计
Silicon Labs推出的EFM8UB系列MCU集成了USB2.0兼容的外设,该系列MCU支持USB的全速与低速通讯,支持4个双向的端点,集成有1KB的专用RAM用于USB的FIFO,对于中断与批量的程序Silicon Labs提供了底层源码,用户可以根据需要进行修改,同时也提供了USB数据包的读写函数, 真正简化USB产品设计,开发。
新产品 发布时间 : 2019-12-12
为什么在8位MCU C8051F392上运行正常的程序增加了一个全局变量后就无法执行到主程序中?
8位MCU C8051F392芯片内部集成有看门狗功能,这个功能默认是开启的,当全局变量过多时,在C语言的程序初始化没有结束时看门狗已经复位了,所以无法执行到主程序中,解决 办法是将STARTUP.A51添加到项目中,并在STARTUP.A51文件中将看门狗关闭。
技术问答 发布时间 : 2017-10-10
【经验】8位MCU EFM8BB3的系统时钟如何切换到高频时钟?
Silicon Labs公司推出的EFM8BB3系列MCU是一款小封装、多用途8位MCU,该MCU可以选择内部49 MHz 振荡器,内部 24.5 MHz 振荡器,外部 CMOS 时钟选择(最高50MHz),外部晶体/RC 振荡器(最高 3.2MHz)作为时统时钟,那么,如何将系统时钟如何切换到高频时钟49 MHz呢?以及有哪些注意事项呢?本文将详细介绍。
设计经验 发布时间 : 2020-01-08
推荐一款带ADC的小封装8位MCU,适用于对模拟性能、MCU性能以及电路板尺寸有比较高要求的场合。
推荐EFM8LB11系列8位MCU,该系列MCU内部集成了高精度ADC(14位)、4个12位DAC、内置温度传感器、模拟比较器以及丰富的数字外设和通信接口,FLASH大小为16/32KB,RAM为1.25/2.25KB,封装包括QFN24、QFN32、QFP32以及QSOP24,最小封装3x3mm,具有高性能、低功耗、小封装等特性,非常适用于高性能、低功耗、小封装,对模拟外设有更高要求的应用设计。
技术问答 发布时间 : 2017-05-05
对于8位单片机EFM8LB10,在使用ADC功能时,如何计算ADC详细的转换时间以及速率?
根据EFM8LB1 Datasheet,ADC转换总所需时间为:Total ConverSion Time=RPT×(ADTK+NUMBITS+1)×T(SARCLK)+(T(ADCCLK)×4);where RPT is the number of converSions represented by the ADRPT field and ADCCLK is the clock selected for the ADC;在高速模式下,以最快的SARCLK为18MHz 计算,跟踪时间至少需230ns( =T(SARCLK)x4),若RPT为累计一个样本,ADCCLK为系统时钟72MHz,那么ADC的转换速率约为:14 Bit Mode:1/[230ns+(14+1)/18MHz+4/72MHz]=0.9Mbps;12 Bit Mode:1/[230ns+(12+1)/18MHz+4/72MHz]=1Mbps;10 Bit Mode:1/[230ns+(10+1)/18MHz+4/72MHz]=1.1Mbps。
技术问答 发布时间 : 2017-05-05
【经验】8位MCU EFM8BB3 UART0波特率设置方法
EFM8BB3系列MCU是Silicon Labs公司推出的一款小封装、多用途8位MCU,该MCU还集成了多种通信功能,包括UART、SPI(主/从)、SMBus/I2C(主/从)接口,其中UART0是一个异步、全双工串口,它提供标准8051串行口的方式1和方式3,那么有没有一种简单,方便,快捷的波特率设置方法呢?本文将对其进行介绍。
设计经验 发布时间 : 2019-12-04
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论