打印
[应用相关]

学习笔记+STM32库函数性能对比

[复制链接]
1047|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 我会弄一点 于 2019-12-31 17:48 编辑

【学习笔记+STM32库函数性能对比】
ST已经推出了三种库函数,分别为标准库、HAL库、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:使用 DMA1 的通道 1, 从 Flash 中传输 100 字节的数据到片内的 SRAM 中。 其中包含了系统时钟的初始化和 DMA
的初始化代码。
主要对比了三个参数:Flash 占用量、 SRAM 占用量和执行代码的效率
IAR编译后生成的.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) 来计算的。 在功能函数的开始处和结束处
分别设置断点, 两次内核运行周期数的差值, 就是此处代码的运行周期。
测试结果如下:

总结:HAL执行效率比标准库和LL库低,标准库的效率是比较标准的结果

使用特权

评论回复
沙发
lihui567| | 2019-12-31 17:02 | 只看该作者
以前都说stm32的STD库执行效率高,hal库和LL库都封装 了标准库,执行效率低啊

使用特权

评论回复
板凳
我会弄一点|  楼主 | 2019-12-31 17:49 | 只看该作者
lihui567 发表于 2019-12-31 17:02
以前都说stm32的STD库执行效率高,hal库和LL库都封装 了标准库,执行效率低啊 ...

写错了,改正了

使用特权

评论回复
评论
lihui567 2019-12-31 19:29 回复TA
没事 
地板
LMCH| | 2020-1-1 16:16 | 只看该作者
楼主好厉害,研究深入

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

438

帖子

3

粉丝