你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【实战经验】关于ST库函数的代码性能对比  

[复制链接]
zero99 发布时间:2016-11-18 16:18
关于ST库函数的代码性能对比


前言
ST已经推出了三种库函数,用以方便客户快速开发STM32系列的MCU。从最早的标准外设驱动库,到后来的Cube HAL,再到 Cube LL,还有直接写寄存器。这几种库的代码效率到底如何呢?本文将针对这个问题进行分析和对比,最后提供对比数据供大家参考。

问题分析
我们以GPIO翻转、TIM PWM 输出、ADC DMA 数据采集和DMA M2M这四个常用功能,通过不同的库函数来实现,最终来对比各个库函数的性能。四个工程代码的内容简述如下:
GPIO翻转:切换GPIO的输出电平,其中包含了系统时钟初始化和GPIO翻转的代码。
TIM PWM输出:通过TIM1 的通道1输出频率是36KHz的PWM,循环修改其占空比从25%到50%,其中包含了系统时钟初始化、TIM1的初始化和切换占空比的代码。
ADC DMA数据采集:通过ADC的模拟通道1,采集100次ADC的结果,并使用DMA传输到到用户缓冲区,其中包含了系统时钟初始化、ADC初始化和DMA的初始化的代码。
DMA M2M:使用DMA1的通道1,从Flash中传输100字节的数据到片内的SRAM中。其中包含了系统时钟的初始化和DMA的初始化代码。
主要对比三个参数:Flash 占用量、SRAM占用量和执行代码的效率。
Flash和SRAM的占用量可以通过查看IAR生成的*.map文件了解到。
11.jpg
在*.map文件中,会有如上图的内容,其中的readonly code memory加上readonly data memory的和,就是Flash的占用量。而Readwrite data memory的大小即为SRAM的占用量。那么上图所示的Flash占用量即为3204=3174+30,SRAM占用量即为1032。因用户堆(Cstack)我们设置的为1024,所以真正应用代码所占用的SRAM量为8=1032-1024.
代码的运行效率部分,我们是通过IAR提供的内核运行周期数(CYCLECONTER)来计算的。在功能函数的开始处和结束处分别设置断点,两次内核运行周期数的差值,就是此处代码的运行周期。
12.jpg
测试硬件选用了Nucleo-F302评估板。
软件环境和库函数详情如下:
    • IAR V7.60
    • Optimizations Level High (Size)
    • STM32CubeMX V4.17
    • Create Project with Copy the necessary library files
    • STM32CubeF3 V1.60
    • STM32F30x_DSP_StdPeriph_Lib_V1.2.3
    • STM32F3xx CMSIS V2.3.0
测试结果如下:
13.jpg

总结:
总体来看,代码效率与移植性成反比的规律是明显的。但与Cube HAL相比, Cube LL的效率优势还是很明显的,几乎和直接写寄存器的效率相差无几。而且目前STM32cubeMX已经开始支持直接生成使用Cube LL的工程,对于以后追求效率的开发应用人员来说,非常值得推荐给大家使用。

STM32库函数性能对比.pdf (240.74 KB, 下载次数: 59)



收藏 7 评论41 发布时间:2016-11-18 16:18

举报

41个回答
moyanming2013 回答时间:2016-11-18 17:58:27
请问此类文有没有出处?
waiman-156411 回答时间:2016-11-18 22:40:30
Cube LL是什么?
哈佛祖安智 回答时间:2016-11-19 00:09:31
给力
peter001 回答时间:2016-11-19 00:57:11
学习一下
zengyi703-16313 回答时间:2016-11-19 03:47:05
学习一下
奏奏奏 回答时间:2016-11-19 07:05:48
“目前STM32cubeMX已经开始支持直接生成使用Cube LL的工程”这个我这么没看到呢?求楼主示范一下怎么操作
any012 回答时间:2016-11-19 11:10:11
本帖最后由 any012 于 2016-11-19 11:15 编辑

第一次听到CUBE LL。
HAL库会不会被放弃?
---------------------------------
搜了下,还发现了个STM32Snippets,这又是个啥?
zhyf 回答时间:2016-11-24 20:59:36
感谢分享!
zxcscm 回答时间:2016-11-25 13:36:09
Cube HAL还没搞明白呢,有出了个Cube LL??
12345下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版