本帖最后由 yangjiaxu 于 2023-4-1 21:52 编辑
#申请原创# @21小跑堂 @21ic小管家
今天拿到意法半导体新发布的STM32C0了,非常开心,所以,在这里给大家分享一下新开发板的开发流程吧。首先打开cubemx,现在新发布的ST的MCU基本上都不提供标准库了,都是以hal或者是LL库来实现开发的,好在ST在这方面考虑周到,为广大用户提供了cubemx来实现hal的基础配置,让大家专心开发应用方面的业务就好了。 图1 创建一个工程 在筛选处输入想要创建的MCU的工程,软件就可以很容易的做出响应的配置。 图2 搜索STM32C0 搜索选中之后,就可以按步骤操作了,就可以了,由于我第一次使用C0,所以需要安装与C0相关的一些配置工具,在这里选择安装即可。稍等片刻就可以安装成功。 图3 安装STM32C0插件 当安装成功之后,就可以进行创建工程和一些外设配置了,本次以CoreMark跑分为例,进行工程创建移植讲解。创建好的工程打开之后,就如图4所示。 图4 STM32C0工程样式 打开工程之后,其实coremark主要应用就是时钟与串口,所以在这里配置好串口就行,然后就是配置时钟,为了时跑分可以得到最大数据,在这里需要将主频设置为最高,官方介绍C0最高主频为48MHz,所以将时钟配置为48MHz即可。 图5 STM32C0时钟配置 配置完成之后,其实基本就可以生成工程了,本次使用的是keil进行开发,所以这里选择使用keil的即可,在编译链(Toolchain/IDE)选择MDK-ARM。然后其他先可以不设置,直接创建工程就可以了。 图6 STM32C0输出配置 创建成功的界面如图7所示,其实就是创建完成之后提示你是否要打开文件,这就跟随自己的习惯就可以了。至此,基础的串口输出工程就配置好了。 接下来就是将coremark移植到C0的工程之中了。 问题1: MCU编译成功没有错误没有警告,但是仿真是进入到硬件中断的问题。 答:这个问题比较有意思,为什么会进入到硬件中断呢,一般情况是因为堆栈设置不合理导致的,这里如果想详细了解就需要多看看书了,因为我也没弄很懂,解决方法就是在.s启动文件之中,修改堆栈的大小即可。 图7 STM32C0进入到硬件中断的解决方法之一 问题2: 仿真都可以通过了,也能输出数据,但是为什么串口没有接收到呢? 答:其实这个就有点意思了,这个跟硬件有点关系,STlink是可以虚拟出来一个串口的,但是这个串口默认接在了串口2上,如图8和图9所示。所以想要用串口输出展现出来就需要修改串口通信的底层函数或者是再用一个串口工具连接串口1的端口上即可。在这里我选择的是第二种方式,也就是用另个串口模块接在了PB6和PB7上,就可以正常接收串口数据了。 图8 STM32C0串口硬件接线方式(1) 图9 STM32C0串口硬件接线方式(2) 至此,针对CoreMark的移植基本就结束了,接下来可以看看跑分情况,通过图10可以看到跑分结果为49.836647,我重复测试了3次,结果都与这个数据相近,所以就取一个中间值吧,48MHz的主频,M0+的内核,其实看跑分的情况来说,数据还是很好的,MCU的性能完全可以,针对电机控制和一些小家电方面的产品完全可以胜任。 图10 STM32C0的CoreMark的跑分情况
从以上测试结果来看,C0 真的可以,就是不知道现在的批量含税价格如何,如果价格也很有优势的话,真的就极具性价比了。最后感谢ST 赠送的C0 开发板,感谢21ic 这个优质平台,感谢给力的管理员。最后分享一下CoreMark 的工程,欢迎大家来玩哦。
STM32C0_CoreMark.rar
(1.08 MB)
|