请选择 进入手机版 | 继续访问电脑版
搜索
查看: 2358|回复: 8

[原创] 【STM32G071】3性能测试

[复制链接]

该用户从未签到

32

主题

1829

帖子

177

蝴蝶豆

论坛元老

最后登录
2021-5-11
发表于 2019-1-19 19:22:37 | 显示全部楼层 |阅读模式
本帖最后由 Angel_YY 于 2019-1-23 22:35 编辑

从官方的数据看,STM32G0系列的最高主频从STM32F0的48MHz升级到了64MHz,对于这个数字好像也没有什么感觉,有没有方法比较直观的体现出性能的提升呢?接下里我们就以比价简单的方式对比一下STM32G071和STM32F072两块开发板的性能有多少差距。
我的思路是这样的,使用STM32CubeMX生成两块开发板的工程,都使用最高主频,使用相同的编译器,分别执行一百万次加法,记录两块开发板所用时长,来对比性能差异。
0001.png
首先使用STM32CubeMX设置开发板的主频为64MHz,生成工Keil程后在工程文件中,使用HAL库的HAL_GetTick函数实现计时功能。
具体方式如下:
首先定义几个时间变量:
uint32_t TimeCnt1;
uint32_t TimeCnt2;
uint32_t TimeCnt3;
uint32_t Tempval;
uint8_t aTxBuffer[50];
初始化HAL库时基
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/10000);
在主循环中实现连续的加法测试:
    TimeCnt1=HAL_GetTick();  //获取当前时间
    for(int i=0;i<1000000;i++)  //开始百万次加法
    {
      Tempval++;
    }        
    TimeCnt2=HAL_GetTick();  //再次获取时间
    TimeCnt3=TimeCnt2-TimeCnt1;  //获取两次时间差值
    sprintf((char *)aTxBuffer,"G071_Time:%dms\r\n",TimeCnt3);
    HAL_UART_Transmit(&hlpuart1,aTxBuffer,strlen((char *)aTxBuffer),HAL_UART_TIMEOUT_VALUE);  //串口输出差值,单位毫秒
在PC机端,使用串口助手接收下位机发送过来的数据
0002.png
发现百万次加法使用STM32G071的64MHz主频,用时大概788ms。
在使用STM32072进行测试。
0003.png
同样使用STM32CubeMX生成工程,主频设置为48MHz,生成Keil工程后打开工程。
0004.png
同样在PC端打开串口助手,接收下位机上传的结果,发现同样的算法,在F072的48MHz主频下用时达到了1685ms.用时超过了G071的一倍。
比较两个开发板输出的时间,在同样的算法,同样的编译器,同样的默认优化下,STM32G071的用时只有STM32F072用时的一半左右。
总结:STM32G0的主频增加到了64MHz,比STM32F072的48MHz增加了50%,但是从执行效率上看G0的效率相比F0增加了一倍多,如果再考虑官方声称价格相对于F0来说还要更有优势,其性价比可见非常之高了。当然本实验只是片面的测试了单片机在连续加法时的表现,并没有做更全面的测试,但也能说明STM32G0系列的性能提升还是很明显的。


两个开发板的工程:
G071.zip (11.74 MB, 下载次数: 23)
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2021-4-15 11:47
  • 签到天数: 537 天

    [LV.9]

    29

    主题

    2176

    帖子

    127

    蝴蝶豆

    论坛元老

    最后登录
    2023-8-27
    发表于 2019-1-19 21:01:21 | 显示全部楼层
    不错~支持一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    1628

    帖子

    5

    蝴蝶豆

    论坛元老

    最后登录
    2022-6-7
    发表于 2019-1-21 09:52:17 | 显示全部楼层
    支持一下,从CoreMark的数据也可以看到G0的性能在M0+内核mcu中属佼佼者了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    1829

    帖子

    177

    蝴蝶豆

    论坛元老

    最后登录
    2021-5-11
     楼主| 发表于 2019-1-22 13:38:58 | 显示全部楼层
    子曰好人 发表于 2019-1-21 09:52
    支持一下,从CoreMark的数据也可以看到G0的性能在M0+内核mcu中属佼佼者了

    之前想移植CoreMark来着,可没什么资料,所以没动手。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    143

    帖子

    2

    蝴蝶豆

    金牌会员

    最后登录
    2020-6-11
    发表于 2019-1-22 14:21:47 | 显示全部楼层
    這樣比較不太公平,應該都用48MHz
    G0:59DMIPS,F0:38DMIPS
    性能差異差多少,最好再加耗電流
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    1829

    帖子

    177

    蝴蝶豆

    论坛元老

    最后登录
    2021-5-11
     楼主| 发表于 2019-1-22 14:31:15 | 显示全部楼层
    chuan199 发表于 2019-1-22 14:21
    這樣比較不太公平,應該都用48MHz
    G0:59DMIPS,F0:38DMIPS
    性能差異差多少,最好再加耗電流

    这个只是从一个方面来做测试而已,并不能做到全面公平的比较。
    从不同角度来理解,结果可能不一样。
    比如从我的角度理解,就是在价格相同的情况下,能买到多高性能的MCU,这样理解是不是会感觉好一点儿了呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32

    主题

    1829

    帖子

    177

    蝴蝶豆

    论坛元老

    最后登录
    2021-5-11
     楼主| 发表于 2019-1-22 21:40:53 | 显示全部楼层
    STM32F0@48MHz     38DMIPS and 68 CoreMark
    STM32G0@64MHz    59DMIPS and 142 CoreMark

    如何将CoreMark程序移植到STM32上




    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35

    主题

    1447

    帖子

    22

    蝴蝶豆

    金牌会员

    最后登录
    2021-2-24
    发表于 2019-1-23 10:04:33 | 显示全部楼层
    不错不错。有机会搞个G0板玩玩。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2020-11-10
    发表于 2020-11-10 10:16:20 | 显示全部楼层
    G071已经在用,最主要是电源供电简单,IO口利用率高
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-3-29 04:22 , Processed in 0.195947 second(s), 41 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表