本帖最后由 八度空间 于 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.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.3 打开IAR软件,建立工程,首先建立一个wordspace(IAR是基于这货进行建立工程的)
2.4 建立工程
点击OK之后,在弹出的对话框中选择工程保存的路径,保存工程,完成后
2.5 建立工程文件目录,这货的目录可以层叠的,MDK不行
建立目录完成
2.6 往目录添加文件
添加文件好像没有MDK爽,不知道是我没找到更好的途径还是怎么样
2.7 新建一个main文件,并添加到USER文件夹
2.8 打开sys.h文件,添加F0的库函数文件(我的文件做了自动适配的
)
2.9 编写LED的IO驱动函数,建立HAL文件夹,在工程目录中,创建LED代码存放文件
我这个LED兼容好几个平台的哈
2.10 编写main函数
点个灯,很容易
2.11 接下来就是重头戏了,环境配置
2.12 选择芯片
2.13 选择printf函数输出,刚开始发现系统默认的(Auto)不行,后来选择Full就可以了,不过需要移植一下(后面讲解)
2.14 添加.h文件路径
完成后的样子
为了方便拷贝,需修改一下,适应自动寻找
$PROJ_DIR$表示的是IAR工程所在的目录,..代表的是上一层目录
2.15 添加库函数需要定义
2.16 选择仿真/下载器,多种可选,根据自己使用的来就行
2.17 选择下载文件目标
2.18 输出HEX文件或者其他的,自行选择
2.19 设置完成后,点击OK关闭配置对话框,点击主界面的Make按钮,或者工程名称鼠标右键选择Make或者Rebuild All也行
2.20 看到底下的输出框,显示0个错误和0个警告,说明编译通过的,连接ST-LINK(配置中选择的下载/仿真器),将生成的代码下载到板子上,看到两个LED灯闪烁,说明移植是成功的
三、有个蛋疼的事情就是(我手上有两块STM32F030的板子)官方那个板子没焊接外部晶振,可以正常跑,我手上自己DIY(人家送的
)的板子就不行,后来查看了一下库文件,发现HSI内有初始化代码
,后来补上了,才正常
3.1 官方库没有HSI的代码
自己添加的
四、关于printf函数移植
打开usart.c文件,在头部位置,有MDK的移植,在这里增加IAR的移植,文中,我增加了自动选择的选项
五、F0中没有位段操作,F1和F4都有,其他没用过,不清楚,所以自己就定义了一个用结构体,具体打开sys.h文件
F0中发现没有u8、u16、u32这样的定义,所以自己添加了一个
六、F0位段操作使用
宏定义,打开hal_led.h文件
在main函数中调用
同样编译没有错误和警告,下载到板子,同样看到两个灯在闪烁
是要写成这样吗?
#define LED1 PAout->b2
#define LED2 PAout->b3
写成这样才可以
写成如下这样不行
#define LED1 PAout(2)
#define LED2 PAout(3)
一周热门 更多>