有快两年时间没怎么接触STM32了,近段时间一直是在研究汽车电子类的MCU。难得有这个机会,接触到的STM32L496这块板子,想想也是可以回来搞搞STM32了。当时用stm32,还是3.5固件库,虽然那会儿也已经有cubeMX了,不过也是刚出来不久,功能不完善,bug也多,而且只支持F1系列的mcu。现在ST官方都是在力推hal库+cubeMX的开发方式了,省时省力,今天我也来试玩一下。 1、在官网下载了最新版本的cubeMX软件安装包 2、安装java环境,然后安装cubeMX软件 3、新建按照教程一个stm32L496的工程,基于mdk5的 基于nucleo144的,板载STlink的串口接在G7G8上 没有外部晶振,所以选择内部时钟,启用80MHz的标准主频 115200的波特率,8数据无校验1停止 这样一个简单的工程建好之后,就可以开始移植CoreMark,不过鉴于这类手把手的教程太多了,我这里就不累述了。我这里主要真对MDK和IAR两个开发软件做了一个对比测试: MDK5.17,Level3优化等级,得分136.93 IAR7.80,high优化等级,得分152.04 从整体来看,L496的得分并不高,从一定方面反映了,作为一款低功耗系列的muc,L496的性能并不是很强,当然,也没必要很强,因为产品定位如此。性能与功耗,总是难以兼得的,st需要做的只是找到这两者之间的一个绝佳平衡点。至于L496是不是这个平衡点的最佳代表,用户就见仁见智吧。一句话,按需选型。 从对比角度来看,IAR的编码编译优化效果明显优于MDK,虽然说mdk算是ARM的“干儿子”了,当时比起老牌的编译器iar,实力上还是差那么一点的。不过iar"朴实无华"的界面,确实让不少人望而却步,而转向了mdk的怀抱。就我个人而言,我是无所谓的,反正两个都有在用。 最后我还是有点想吐槽的地方,官方提供的例程,我看了一下串口的,全是板对板通信,这就有点不合理了吧,测试个例程还需要两块板子,应该是串口PC打印的例程更为合适吧。 附上IAR和MDK的例程 |
分数差的好多,方便分享一下代码吗,我想看看移植在哪出问题了
其实我的意思是,板对板的通信,初始化的串口就不是板载stlink虚拟串口所连接的引脚了,这样用起来不方便,需要外接一个usb转ttl,或者需要自己查看原理图然后再初始化串口
他用的是IAR ANSI C/C++编译器,你用的是ARM C/C++编译器。
假如ST-LINK连接到了MCU的串口0,那么你就初始化串口0就行了,ST-LINK是透明的,ST-LINK的驱动在电脑端会实现一个虚拟串口,你直接用串口工具看就行了。
其实这里的“TwoBoards”可以视作MCU和ST-LINK MCU。
我想请教一下,IAR里用的就是IAR ANSI C/C++编译器吗?
具体你用的哪个你看下配置,里面有可选的编译器。