第一篇 STM32F030芯片开发环境搭建MDK & IAR

2019-07-21 03:51发布

本帖最后由 八度空间 于 2016-5-6 22:23 编辑

STM32F030是ST的M0内核的MCU,同系列Pin To Pin其他的,具体大家可以对比一下,我就对比了F051和F103的

运行平台:官方的STM32F030开发板
编译环境:MDK & IAR(由于本人没用过IAR编译,所以花时间折腾一番,还行重点讲解一下IAR开发F0的教程,也给自己一个学习的备份

一、MDK环境搭建
1.1 使用官方的库函数开发,可以到官方网站上下载F0对应的库函数
1.2 库函数包下载之后。。。(省略1万字)
1.3 下载F0在MDK中的PACK
1.4 打开MDK开始搭建编译环境,如同F1的一样,只是选择芯片不一样
1.png
1.5 开始编写代码,官方的板子带了两颗LED,可以写一个流水灯的程序。。。(省略1万字)
二、IAR环境搭建
2.1 IAR和MDK的PK,网上也很多人做了对比,我就不说了,总的来说IAR的编译速度比MDK要快,代码密度也好,编辑环境没有MDK做的那么的友好,脑补(代码补全)功能没有MDK做的好,不过可以用Source Insight做编辑,IAR做编译,也行
2.2 安装官方最新的(不知道是不是哈)IAR软件For ARM的(别装错了啊),至于和谐什么的请度娘
2.3 拷贝相关的文件到文件夹(注意:IAR这货工程中不能有中文路径,MDK倒是可以
2.png
2.3 打开IAR软件,建立工程,首先建立一个wordspace(IAR是基于这货进行建立工程的)
3.png
2.4 建立工程
4.png
5.png
点击OK之后,在弹出的对话框中选择工程保存的路径,保存工程,完成后
6.png
2.5 建立工程文件目录,这货的目录可以层叠的,MDK不行
7.png
建立目录完成
8.png
2.6 往目录添加文件
9.png
添加文件好像没有MDK爽,不知道是我没找到更好的途径还是怎么样
2.7 新建一个main文件,并添加到USER文件夹
2.8 打开sys.h文件,添加F0的库函数文件(我的文件做了自动适配的
10.png
2.9 编写LED的IO驱动函数,建立HAL文件夹,在工程目录中,创建LED代码存放文件
11.png
我这个LED兼容好几个平台的哈
2.10 编写main函数
27-12.png
点个灯,很容易
2.11 接下来就是重头戏了,环境配置
13.png
2.12 选择芯片
14.png
2.13 选择printf函数输出,刚开始发现系统默认的(Auto)不行,后来选择Full就可以了,不过需要移植一下(后面讲解)
15.png
2.14 添加.h文件路径
16.png
完成后的样子
17.png
为了方便拷贝,需修改一下,适应自动寻找
18.png
$PROJ_DIR$表示的是IAR工程所在的目录,..代表的是上一层目录
2.15 添加库函数需要定义
19.png
2.16 选择仿真/下载器,多种可选,根据自己使用的来就行
20.png
2.17 选择下载文件目标
21.png
2.18 输出HEX文件或者其他的,自行选择
22.png
2.19 设置完成后,点击OK关闭配置对话框,点击主界面的Make按钮,或者工程名称鼠标右键选择Make或者Rebuild All也行
23.png
24.png
2.20 看到底下的输出框,显示0个错误和0个警告,说明编译通过的,连接ST-LINK(配置中选择的下载/仿真器),将生成的代码下载到板子上,看到两个LED灯闪烁,说明移植是成功的
三、有个蛋疼的事情就是(我手上有两块STM32F030的板子)官方那个板子没焊接外部晶振,可以正常跑,我手上自己DIY(人家送的)的板子就不行,后来查看了一下库文件,发现HSI内有初始化代码,后来补上了,才正常
3.1 官方库没有HSI的代码
25.png
自己添加的
26.png
四、关于printf函数移植
打开usart.c文件,在头部位置,有MDK的移植,在这里增加IAR的移植,文中,我增加了自动选择的选项
27.png
五、F0中没有位段操作,F1和F4都有,其他没用过,不清楚,所以自己就定义了一个用结构体,具体打开sys.h文件
28.png
29.png
30.png F0中发现没有u8、u16、u32这样的定义,所以自己添加了一个
33.png
六、F0位段操作使用
宏定义,打开hal_led.h文件
31.png
在main函数中调用
32.png
同样编译没有错误和警告,下载到板子,同样看到两个灯在闪烁


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
37条回答
东北小辉辉
1楼-- · 2019-07-21 05:11
顶一个,最近也在用stm32f0,感觉跟f1相差不大,f0去掉了GPIO的重定义功能,改成了附加功能。
八度空间
2楼-- · 2019-07-21 07:08
东北小辉辉 发表于 2016-5-6 22:15
顶一个,最近也在用stm32f0,感觉跟f1相差不大,f0去掉了GPIO的重定义功能,改成了附加功能。

bht890811
3楼-- · 2019-07-21 09:39
 精彩回答 2  元偷偷看……
miaoguoqiang
4楼-- · 2019-07-21 12:38
最近在使用F0的Cubumx库,使用起来效率太低了
八度空间
5楼-- · 2019-07-21 15:15
bht890811 发表于 2016-5-7 00:02
请问版主有没有试过Segger Emnedded Studio这个编译器如何搭建STM32开发环境呢?还有别人用过这个环境吗?

还真没有用过
八度空间
6楼-- · 2019-07-21 17:10
 精彩回答 2  元偷偷看……

一周热门 更多>