查看: 192|回复: 1
打印 上一主题 下一主题

STM32F030 Nucleo学习笔记(三)结合ST CubeMX和CoIDE

[复制链接] qrcode

33

主题

35

帖子

109

积分

注册会员

Rank: 2

积分
109
楼主
跳转到指定楼层
发表于 2015-8-30 08:13 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接下来介绍一个图形化的固件库函数工具,由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。

这样就有了一个空项目

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


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

点击Browse选择要保存代码的路径,选择CooCox workspace目录。

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

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

然后点OK,等待片刻代码生成,Close即可。

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

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

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

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

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

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

这里有两个main,肯定不行,需要把根目录的给删除掉。 
。  

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

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

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

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

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

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


OK,至此配置完成,按F7编译。

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

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

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

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

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

65

帖子

4

积分

新手上路

Rank: 1

积分
4
沙发
发表于 2015-8-30 08:34 AM | 只看该作者
感觉STM开发的SW tool太多了,如IAP,STVP,Keil,还有Flash loader,mbed在线编程,再还有STM32CubeMX。。。多了不怎好选择,最后看个人习惯爱好了。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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