烽火社区

标题: STM32F030 Nucleo学习笔记(三)结合ST CubeMX和CoIDE [打印本页]

作者: qinyejun    时间: 2015-8-30 08:13 AM
标题: STM32F030 Nucleo学习笔记(三)结合ST CubeMX和CoIDE
接下来介绍一个图形化的固件库函数工具,由ST公司推出的STM32CubeMX。 论坛上已经有人介绍过如何使用CubeMX,不再赘述,本文介绍如何使用CubeMX生成代码,并在CooCox IDE环境中使用。

有人奇怪了,你为什么这么大力推广CooCox? 它有什么好? 大多数人都在用MDK(Keil)或IAR,你用CooCox写的程序别人用起来也麻烦啊?我之所以这么大力推广CooCox IDE,原因有以下几点:

1. CooCox基于Eclipse开发,Eclipse强大、便捷的代码组织能力,几乎其它任何IDE都无法比拟!IAR没用过不评论,MDK只提供比较简单IDE环境,连代码助手、重构这类功能都不具备,很难和Eclipse一较高下。略遗憾的是CooCox不完全开源,而且也没能实现全部Eclipse功能,算一点小小的不足吧。
2. CooCox具备社区能力,通过IDE就可以引用到社区的代码和函数。不要小看社区,国外Arduino、Raspberry PI之所以这么火,社区功不可没!
3. CooCox完全免费! 也许在国内使用D版IAR、MDK和如今D版操作系统般的普及,但是,如果你自己不尊重别人的劳动成果,凭什么让别人来尊重你!

好不扯了,接下来还是看看如何组合CubeMX和CooCox吧。

CubeMX官方下载地址:

http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF259242?sc=microxplorer#

官网速度比较慢,这里给出百度云盘地址:http://pan.baidu.com/s/1dDlTDO9
安装需要JDK运行环境,但如果你已经能运行CooCox了,那么CubeMX也没问题。

CubeMX是图形化界面,操作起来很简单,方法就不介绍了,可以参考论坛上其他人的帖子,例如这里:http://bbs.ickey.cn/group-topic-id-53104.html

首先,建立一个项目,暂时命名为FirstCubeBlink,选择Chip -> 选择STM32F030R8T6 -> Finish。
[attach]38102[/attach]

这样就有了一个空项目
[attach]38103[/attach]

暂时不管它,打开CubeMX -> New Project -> Board Selector -> MCU STM32F0 -> Nucleo Board F030R8 ,然后点击Ok

[attach]38104[/attach]

这里我们全部选择默认吧,它已经标出A5作为板上LED输出的设置了。
[attach]38105[/attach]
还是图形化操作起来省事,不用记那么多寄存器的名称。点击Generate Code
[attach]38106[/attach]

点击Browse选择要保存代码的路径,选择CooCox workspace目录。
[attach]38107[/attach]

名称同名命名FirstCubeBlink,注意这里Toolchain/IDE选个MDK-ARM V5,因为一会儿要用到它的项目文件。
[attach]38108[/attach]

点击Code Generator,选择第二项,只拷贝必须的文件库。
[attach]38109[/attach]

然后点OK,等待片刻代码生成,Close即可。
[attach]38110[/attach]

打开目录树,大致能看到这个结构,接下来是CooCox配置,步骤稍微有点多。
[attach]38111[/attach]

首先按照通常模式,建立文件目录组。在项目上点击右键 -> Add Group
[attach]38112[/attach]

一共增加四个文件组,组名任意,大致按照生成目录的结构。
[attach]38113[/attach]

然后在每个文件组中添加C文件,在CMSIS组添加系统文件。此时可以活用Windows 7的搜索功能,搜索system开头的C文件。
[attach]38114[/attach]     [attach]38115[/attach]

HAL是库文件,这里添加的比较多,打开目录workspaceFirstCubeBlinkDriversSTM32F0xx_HAL_DriverSrc,选*面的所有C文件,一起添加。
(如果刚才在Generate Code中没有选 copy only necessary library file,此时会列举出全部C文件,全选编译会有错。当然,如果你知道告警原因,解决很容易)
[attach]38116[/attach] [attach]38117[/attach]

User组就是用户自己定义的main.c等。STM32目前没用。

这里有两个main,肯定不行,需要把根目录的给删除掉。 
[attach]38118[/attach]。 [attach]38119[/attach] [attach]38120[/attach]

最后还需要增加BOOT文件,这个是CooCox IDE环境需要的,选Repository视图,勾选CMSIS BOOT
[attach]38121[/attach]

此时系统会增加一些文件,但我们最关心的是startup文件,没有它是无法生成项目的。其它文件我们不需要,因为没有使用CooCox带的固件库,可以把它们都删掉。
[attach]38122[/attach][attach]38123[/attach] 

文件已经添加完,此时还不能编译,还需增加几个编译选项。右键Project 选Configuration
[attach]38124[/attach]

用文本编辑器打开MDK-ARM目录下的FirstCubeBlink.uvprojx 项目文件,从中搜索
[attach]38125[/attach]

把这两define的变量加入configuration选项卡中的Defined Symbols,原有的STM32F030X8要删掉,因为大小写不一样。。。
[attach]38126[/attach]

在includepaths中添加文本文件中一样的内容,每一相要单独添加,且要把前面的..去掉。

[attach]38127[/attach]

OK,至此配置完成,按F7编译。
[attach]38128[/attach]

Defined Symbols非常关键,默认有个STM32F030X8,但它是大写X,CubeMX需要小写x,一开始我就是这一步怎么也过不去。

好,接下来我们修改下main函数,blink下LED吧。ST官方库现在叫HAL,跟以前的不太兼容,至于用老的还是新的都无所谓,这只是个习惯问题,用用就熟了。
[attach]38129[/attach]
看到GPIBA->A5已经设置成OUTPUT_PP了,仔细看main.c文件
[attach]38130[/attach]

注意到其中有注释 
/* USER CODE BEGIN xx */ 
/* USER CODE END xx */ 
的字样,尽量把自己代码放在语句块之中。因为如果你再次使用CubeMX改变某个参数的时候,不在注释块中间的代码会被删除掉,到时欲哭无泪不要怪我。还有,如果增加新功能,可能会在HAL中增加新的C文件,这只能通过手动添加,没办法,CubeMX目前还没打算支持CooCox。。。

[attach]38131[/attach]
一共只增加了3行,注意要写到注释的框中去,不然再用CubeMX生成器,代码就被删掉了!
[attach]38132[/attach]
编译成功,很小,接下来点下载按钮刷进Nucleo板中!
[attach]38133[/attach] [attach]38134[/attach]

至此,CooCox IDE就和STM32CubeMX结合在一起了,使用ST最新的HAL库。

通过这部分学习,我们知道,IDE其实就是调用GCC的命令行,通过不同参数,把所有文件链接在一起。

作者: fsy_1979ELeAcer    时间: 2015-8-30 08:34 AM
感觉STM开发的SW tool太多了,如IAP,STVP,Keil,还有Flash loader,mbed在线编程,再还有STM32CubeMX。。。多了不怎好选择,最后看个人习惯爱好了。。。




欢迎光临 烽火社区 (http://bbs.cnecport.com/) Powered by Discuz! X3.2