1.2 基于ARM Cortex-M3的STM32单片机教学开发板
本书除了介绍基于ARM Cortex-M3的STM32F103xx微控制器单片机原理与应用开发外,还将引导你如何运用STM32F103xx微控制器开发板控制机器人运动与感知周边环境,并采用C语言对STM32F103xx进行编程,使机器人实现下述4个基本智能任务。
(1)安装传感器以探测周边环境;
(2)基于传感器信息做出决策;
(3)控制机器人运动(通过操作带动轮子旋转的电机);
(4)与用户交换信息;
通过这些任务的完成,使大家在无限的乐趣之中,不知不觉地掌握基于ARM Cortex-M3的STM32F103xx微控制器(32位单片机)原理与应用开发技术,以及C语言程序设计技术,轻松走上基于ARM Cortex-M3的STM32微控制器(32位单片机)嵌入式系统开发与设计之路。本书所用教学开发板如图1.2所示。由于STM32F103xx系列微控制器具有全兼容性,因此可以选用STM32F103VB、STM32F103VC、STM32F103VD、STM32F103VE,以获得更多存储空间和片上资源。
图1.2 STM32F103xx增强型微控制器单片机教学开发板
图1.3所示的是本书使用的机器人工程对象,它采用ARM Cortex-M3处理器作为大脑,通过教学(开发)板安装在机器人底盘上。本书将以此机器人作为典型工程对象,引导大家学习STM32F103xx微控制器单片机原理与应用开发,并完成一个简单机器人所需具备的四种基本能力,使机器人具有基本的智能。
图1.3 基于ARM Cortex-M3处理器的STM32机器人小车
本章首先通过以下步骤告诉你如何安装和使用基于ARM Cortex-M3的STM32微控制器单片机的编程开发环境,并用C语言开发一个简单的程序。具体任务包括:
● 安装开发编程软件;
● 连接教学(开发)板到供电电源或者电池;
● 连接教学(开发)板ISP接口到计算机,以便编程;
● 连接教学(开发)板串行接口到计算机,以便调试和交互;
● 运用C语言编写程序,编译生成可执行文件,然后下载到单片机上,观察执行结果;
● 完成后断开电源。
任务一 获得软件
在本课程的学习中,你将反复用到几款软件:RealView MDK(Microcontroller Development Kit)集成开发环境、串口调试软件等。集成开发环境允许你在电脑上编写程序,并编译生成可执行文件,然后下载到单片机上;串口调试软件则是让你知道单片机微控制器在做什么,观察执行结果。
1.RealView MDK集成开发环境
RealView MDK开发套件源自德国Keil公司,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,包括μVision 3集成开发环境与RealView编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本RVCT 3.1可将性能改善超过20%。你可以在Keil公司的官方网站www.keil.com网站上获得该软件的安装包,安装后包含STM32F10x系列处理器片上外围接口固件库(Fireware Library)。
另外一个常见的集成开发环境是IAR EWARM,它是IAR Systems公司针对各种嵌入式处理器的软件开发工具,涉及嵌入式系统的设计、开发和测试的每一个阶段,包括带有C/C++编译器和调试器的集成开发环境、实时操作系统和中间件、开发套件、硬件仿真器,以及状态机建模工具。其最著名的产品是C编译器——IAR Embedded Workbench,支持众多知名半导体公司的微处理器,包括ARM、8051、AVR32、MSP430等内核和MCU。
2.串口调试软件
此软件是用来显示单片机与计算机的交互信息的。在硬件上,你的计算机至少要有串口或USB接口来与单片机教学开发板的串口连接。
任务二 安装软件
到目前为止,你已获得了软件安装包,包括某个版本的MDK安装包、串口调试终端、STM32库文件和本书例程的源码。软件的安装与其他软件安装过程一样。先安装MDK:
(1)执行MDK安装程序,双击MDK安装文件图标,进行安装。
(2)在后续出现的窗口中依次单击Next按钮,将程序安装在C:\Keil MDK***文件目录下(***:表示版本号,默认安装路径是C:\Keil,建议换个路径名,以防止与51单片机开发环境冲突)。安装好以后,查看安装路径下ARM子目录的结构。
● BIN目录下面一般是一些动态链接文件;
● BINxx目录下面放置的是一些编译器和链接器;
● Boards和Examples目录下面放置的是一些例程:Boards目录下放置的是根据一些厂商所设计的开发板例子,而Examples下面则是一些更大众化的例程。
● Flash目录下面放置的是一些厂商的Flash芯片所用到的驱动程序,可以以其中的例程为模板,来添加自己的驱动。
● HLP目录下面是一些帮助文档。
● INC目录下存放的是支持ST公司、Philips公司、Atmel公司等基于ARM Cortex-M3的各种微控制器的头文件,如在ST公司目录下有STM32F10X系列微控制器的固件库头文件。
● RL和RT Agent两个目录下面是一些免费的操作系统,如果想写编写实时操作系统,可以参考这两个文件夹里面的资料。
● RV31目录里面是RealView编译器所使用的一些库文件;RV31\LIB目录下存放的是固件库源代码。可以打开文件,查看MDK自带的STM32F10x固件库版本。
● Segger和Signum两个目录下面是USB驱动。如果使用ULink进行硬件仿真时,找不到硬件,那么可以在这里面重新安装驱动。
● Startup目录下面放置的是各个芯片厂商的各种启动代码,在创建工程的时候编译器会提示是否要添加启动文件到工程下面。
● Utilities目录下面放置的是PC机工具软件用于调试人机接口(HID)和网络接口。
(3)输入License:运行Keil RealView MDK,选择File菜单下的License Management子菜单,如图1.4所示。
图1.4 File菜单下的License Management子菜单
将License序列号复制到License Management中的New License ID Code(LIC)中,单击ADD LIC完成,如图1.5所示。
图1.5 输入License序列号
任务三 硬件连接
基于ARM Cortex-M3的STM32F103微控制器单片机教学开发板(或者说机器人大脑)需要连接电源以便运行,同时也需要连接到PC机或笔记本电脑以便编程和交互。以上接线完成后,你就可以用编辑器软件来对系统进行开发与测试。下面将告诉你如何完成上述硬件连接任务。
串口线连接
STM32F103微控制器单片机教学开发板通过串口电缆连接到PC机或笔记本电脑上以便与用户交互,如图1.6(a)所示。如果你的计算机有串行接口,直接使用串口连接电缆。如果没有,此时需要使用USB转串口适配器,如图1.6(b)所示。将一端的串口连接到你的教学开发板上,而另一端连接到计算的USB口上,并安装对应的USB驱动程序。
图1.6 串口线连接
基于ULink的JTAG下载线连接
程序是通过连接到PC机或者笔记本电脑USB口的ULink来下载到教学开发板上的单片机内。图1.7所示为ULink下载工具。下载线一端通过USB线连接到PC机或者笔记本电脑的USB口上,而另一端连接到教学开发板上的JTAG口上。
图1.7 ULink下载工具
如图1.8所示,这里用的USB线一端是扁形(A型),一端是方形(B型),如图1.8(a)所示。扁形口接电脑,方形口接ULink。USB线一般分为不带屏蔽的USB线和带屏蔽的USB线,外表有屏蔽层的就是带屏蔽的USB线,如图1.8(b)所示,右边的USB线是带屏蔽的,左边的USB线是不带屏蔽的。建议用于程序下载使用的USB线为带屏蔽的。
图1.8 USB线
电源和电池的安装
教学开发板可以使用从电脑USB口引出的5V电源。使用图1.8(b)左边不带屏蔽的USB线,扁形口接电脑,方形口接教学开发板。但需注意电脑引出的USB电源供电电流最大只有500mA,当给电机(舵机)供电时可能会造成供电电流不足,导致电机(舵机)不能正常工作。
教学开发板也可使用电池供电。本书使用的机器人采用4节五号碱性电池给机器人电机和教学开发板供电,可将电池盒引出的电源线插入电源插座(φ2.5细针)。在继续下面的任务前,请先检查机器人底部电池盒内是否已经装好电池,并是否有正常的电压输出。如果没有,请更换新的电池。更换过程中,确保每颗电池都按照塑料盒子里面标记的电池极性(“+”和“-”)方向装入。
当然,教学开发板也可以使用外接的5V或6V输出的电源适配器供电。
给教学开发板进行通电检查
教学开发板上有一个电源三位开关。如图1.9(a)所示,当开关拨到“0”位断开教学开发板电源。无论你是否将电池组或者其他电源连接到教学开发板上,只要三位开关位于“0”位,那么设备就处于关闭状态。
现在将三位开关由“0”位拨至“1”位,打开教学开发板电源,如图1.9(b)所示。检查教学开发上的LED电源指示灯是否变亮。如果没有,检查USB供电线缆或者电池盒的接头是否已经插到教学开发板的电源插座上。
图1.9 电源三位开关
将开关拨至“2”后,电源不仅要给教学开发板供电,同时还会给机器人的执行机构——伺服电机供电,同样地,此时LED电源指示灯仍然会变亮。