相关文章:
2017/7/9 UPDATED
强烈推荐使用CoIDE+GNU ARMg工具链开发STM32,全部是一键式点击就能新建完整的工程,不会像在KEIL MDK修改这个修改那个那么麻烦,最最重要的是CoIDE和GNU ARM Embedded Tooltrain都是免费的,不存在侵权问题,几乎所有的KEIL下的工程都能方便快捷移植到CoIDE中
前不久了解了下STM32单片机,用keil建立项目(Project)折腾了一段时间,感觉比51单片机难多了,现在记录一下基于keil5的STM32工程的建立。
遇到的第一个问题就是C51和MDK的共存问题,如果不按一定方法安装的话keil只能打开一种类型的project,下面介绍我自己的解决方案。
我安装的版本是C51V954a和mdk511a,需要的点击这里下载,安装的时候先建立一个文件夹,我的在E盘建立了keil这个文件夹,然后先安装C51V954a,把安装路径选择之前建立的 E:\keil 这个文件夹里,安装完成后先不要激活(KEIL_Lic Activator.exe这个是激活工具,仅供学习使用,,如有商业需要请购买正版),然后安装mdk511a,同样把安装路径指向 E:\keil 这个文件夹,这时候安装的时候会提示是否复制并替换的,选择不替换,保存两个文件,这个安装在同一个文件夹的方法是我网上找到的最方便的方法。最后的安装目录文件如下:
然后打开keil5,新版本的会有Pack Installer弹出来,下载自己对应的型号即可,选择新建project,这时就可以在device那里选择建立51或STM32的project了
我用的是最新固件库3.5版本的,主要要用到 Libraries 和 Project 这两个文件夹下的文件。
在自己想保存文件的地方新建一个文件夹,命名为 Template4(名字随意,最好英文名,中文名不知道会不会出错,我自己也没去试过),在 Template4 下面再建立三个子文件夹,分别命名为 CMSIS(存放内核支持文件和设备支持文件)、FWLIB(存放外部设备驱动文件)、USER(存放自己的文件,如主函数等),接下来的步骤就是把库函数3.5里的文件复制到刚才建立的子目录下面
1)、CMSIS
把 库函数3.5\Libraries\CMSIS\CM3\CoreSupport
下的这两个文件复制到CMSIS目录下, 还有把库函数3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10X
文件夹下面的文件 复制到CMSIS,最终CMSIS里的文件有
2)、FWLIB
把库函数3.5\Libraries\STM32F10x_StdPeriph_Driver
文件夹里面的 两个文件复制到 FWLIB 下面
3)、USER
把库函数3.5\Project\STM32F10x_StdPeriph_Template
目录的圈起来的文件复制到USER目录下
4)、在keil5 里新建工程
点击工具栏的New Project新建工程,主要要把project放在刚才建立的Template文件夹下面,这样才方便稍后的操作,同时选择自己芯片的型号,完成后在刚才的文件夹下会有以下文件
注意到多了三个文件夹,是用来放一些编译过程产生的文件的,最终生成的HEX文件也会默认在Objects目录下。
5)、配置相关文件
点击配置的按钮 ,打开如下界面,添加相应的组名,其中CMSIS,FWLIB,USER和之前建的文件是一样的,多了个STARTUP,这个是用来存放启动文件的,启动文件放在CMSIS\startup\ARM
里面,后缀是.s
,配置的时候要选择所有文件格式才能看到,最终的配置如图:
FWLIB的添加的文件只需要src
目录下的.c
后缀的文件即可,编译的时候会自动把头文件包括进去的
6)、这里完成之后还要修改一处,点击 ,在Define
那里写上USE_STDPERIPH_DRIVER,STM32F10X_MD
(我的STM32型号是F103RB,64KB闪存,所以选择的是中容量的启动文件STM32F10X_MD
,另一个单片机型号F103RC选择的是STM32F10X_HD
,这个可根据自己的需要修改)
同时要在Include Path
那里选择头文件的位置
7)、编译的时候可能会出错,因为main函数是直接复制库函数版本的,可以自己修改后编译
2017/4/19更新
用KEIL是目前大部分教程提供的构建STM32工程的方法,今天学习了用免费的IoIDE和ARM嵌入式GNU工具链
来开发,第一次了解,但是也觉得比KEIL简单,而且最重要的免费的,不存在侵权问题,有兴趣的可以阅读我的另一篇博客:
CoIDE+GNU工具链构建STM32F103xx工程