|
本帖最后由 Angel_YY 于 2019-1-23 22:35 编辑 从官方的数据看,STM32G0系列的最高主频从STM32F0的48MHz升级到了64MHz,对于这个数字好像也没有什么感觉,有没有方法比较直观的体现出性能的提升呢?接下里我们就以比价简单的方式对比一下STM32G071和STM32F072两块开发板的性能有多少差距。 我的思路是这样的,使用STM32CubeMX生成两块开发板的工程,都使用最高主频,使用相同的编译器,分别执行一百万次加法,记录两块开发板所用时长,来对比性能差异。
首先使用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机端,使用串口助手接收下位机发送过来的数据
发现百万次加法使用STM32G071的64MHz主频,用时大概788ms。 在使用STM32072进行测试。
同样使用STM32CubeMX生成工程,主频设置为48MHz,生成Keil工程后打开工程。
同样在PC端打开串口助手,接收下位机上传的结果,发现同样的算法,在F072的48MHz主频下用时达到了1685ms.用时超过了G071的一倍。 比较两个开发板输出的时间,在同样的算法,同样的编译器,同样的默认优化下,STM32G071的用时只有STM32F072用时的一半左右。 总结:STM32G0的主频增加到了64MHz,比STM32F072的48MHz增加了50%,但是从执行效率上看G0的效率相比F0增加了一倍多,如果再考虑官方声称价格相对于F0来说还要更有优势,其性价比可见非常之高了。当然本实验只是片面的测试了单片机在连续加法时的表现,并没有做更全面的测试,但也能说明STM32G0系列的性能提升还是很明显的。 两个开发板的工程:
G071.zip
(11.74 MB, 下载次数: 17)
|
微信公众号
手机版
之前想移植CoreMark来着,可没什么资料,所以没动手。
G0:59DMIPS,F0:38DMIPS
性能差異差多少,最好再加耗電流
这个只是从一个方面来做测试而已,并不能做到全面公平的比较。
从不同角度来理解,结果可能不一样。
比如从我的角度理解,就是在价格相同的情况下,能买到多高性能的MCU,这样理解是不是会感觉好一点儿了呢
STM32G0@64MHz 59DMIPS and 142 CoreMark
如何将CoreMark程序移植到STM32上