_【@. 目录】
【@.1 开篇】
之前一直玩的是NXP的ARM,LPC2119、LPC2294系列,用的是ADS。写代码时也是直接操作寄存器,没有用到什么库函数之类的。最近公司里面想要建立自己的库函数,将常用的什么引脚选择、GIPO设置、定时器设置之类的封装起来,供快速开发用。于是突然联想到,其实库函数这东西不新鲜,飞思卡尔、STM32都有自己的库函数,而且人家的是官方的而我们自己建立的话也就是自己的一个开发小组内部用用而已,也没有什么合理的版本管理之类的。于是买了一块STM32的开发板玩玩。
上网搜索到了一块比较不错的开发板,是“ALIENTEK MiniSTM32开发板”,芯片采用的是STM32F103RB,上淘宝一搜就有。板子如下图:
之所以认为板子不错的原因是,开发板子的工作室有自己的网站。这个论坛里面还是比较活跃的。有前人的技术支持自己做起来就省事多了。
买回来的板子里给的光盘里有MDK工程模板,是工作室他们自己建立的一个小的库。并且他们也提供了基于STM32官方库的模板。不过一个问题是,他们的MDK工程只能在MDK3.80,或MDK4.0x下,我们常用的MDK4.26以上就不能用了,原因是新的MDK版本中修改了stm32相关头文件的结构,一些名字有了改变。具体有哪些变化这里就不一一列举了。于是萌生了想自己构建一套STM32官方库模板的想法。其实这个模板的建立方法很多,我这里也是参考了网上前辈们的建立经验,并加入了Visual Studio或Eclipse来弥补MDK中没有代码智能提示的弱点。(其实这个也不算是弱点...我这就是被娇惯)
【@.必要软件】
1) STM32F10x_StdPeriph_Lib_V3.5.0 //在STM32官网首页找到”Product -> Micros&Memories -> Microcontrollers -> STM32- 32-bit ARM Cortex MCUs -> STM32 F1 Mainstream”, 此页面为STM32F1xx系列芯片的选型页面。切换到Resources页面,点击firmware,在新弹出的页面中找到stm32f10x standard peripheral library一栏,注意右侧版本号(截止目前为3.5),点击左侧即可下载。该库即为官方库,采用其中的函数可以方便快速的进行开发。注意:这里不选择将官方库放在MDK安装目录下,而是放在工程模板中,库函数总共才2MB多一点,这样若官方库有更新可直接更新工程模板相关文件即可。具体操作后面会说明。
下面简单说明下STM32芯片的选型。首先总体分类情况可从下面官网上截取的图片中看出:
而这里我买的开发板的型号是STM32F103RB,引用一段百度说明这个型号的意义:
(1)STM32:STM32代表ARM Cortex-M3内核的32位微控制器。
(2)F:F代表芯片子系列。
(3)103:103代表增强型系列。
(4)R:R这一项代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚。
(5)B:B这一项代表内嵌Flash容量,其中6代表32K字节Flash,8代表64K字节Flash,B代表128K字节Flash,C代表256K字节Flash,D代表384K字节Flash,E代表512K字节Flash。
(6)T:T这一项代表封装,其中H代表BGA封装,T代表LQFP封装,U代表VFQFPN封装。
(7)6:6这一项代表工作温度范围,其中6代表-40——85℃,7代表-40——105℃。
2) MDK-ARM //在Keil官网,选则product downloads,选择MDK-ARM下载即可。截止2012年9月最新版本为4.60。crack文件自己寻找。注意若MDK版本低于4.0x以下,stm32的头文件结构跟如今的结构有很大变化,所以使用太老版本的MDK编译的话移植到比较新版本上会出现问题。采用MDK进行ARM的开发是目前流行的方案,可以实现代码编写、编译、仿真、下载等一些列工作。但是其没有代码智能提示功能,所以本文推荐另外的工具进行代码编写,可让代码编写变得很方便。本文使用MDK4.60示例。
3) Visual Studio //选择安装2010,2008,2005都没问题,这个随意,上网到处都可以下载到这里就不说了。选择Visual Studio仅仅是利用到其中的代码智能识别功能。当然有代码识别功能的软件有很多,不见得非得VS。日后可将利用Visual Studio调用Keil的armcc或gcc编译器,实现项目工程的进一步整合,这是后话。本文中使用VS2010示例,而因为没有用到Visual Studio的全部功能,所以只需要下载一个免费的Visual Studio 2010 Express版本即可。如果喜欢新出的Visual Studio 2012 Express版本也可以的。
4) Eclipse //eclipse是一款跨平台优秀的开源shell软件,其仅仅是个空壳,自己没有编译器,需要用户自己添加编译器连接器等。选择Eclipse也能实现代码智能提示功能,这里仅仅为熟悉Eclipse的人提供多一种选择。Eclipse在Windows下的安装在后面会继续提到。
5)Flash loader demonstrator(Optional) // 这是一款STM32官方的串口ISP下载工具,可以在STM官网上下载到。这里就直接提供官网上的压缩文件下载地址。当然我更推荐直接用JLink了,可以下载也可以在仿真。但是对于一些没有画JTag接口的板子来说传统的串口ISP下载也是适用的。
@.[FIN] @.date->Nov 20, 2012 @.author->apollius