为了“打通”开发平台与开发板之间的联系,检验开发环境是否正常,我们先编写一个非常简单的程序,并将之下载到开发板,以此作为一个引子。
首先,打开MDK5,进入到主界面,如图1-7所示。再单击“Project”菜单,选择“New μVision Project”命令。
图1-7 新建项目
其次,选择存放文档的位置以及文件名,如图1-8所示,比如保存在一个名称为“1”的文件夹中,将项目名命名为“1”,单击“确定”按钮。
图1-8 建立项目文件
再次,进入器件(MCU)的选择。本教材使用的开发板是STM32F407ZGT6,因此执行“STM32F4 Series”→“STM32F407”→“STM32F407ZG”→“STM32F407ZGTx”命令,如图1-9所示,单击“OK”按钮。
图1-9 选择相应的微处理器
最后,屏幕上出现如图1-10所示的运行环境管理界面。该界面显示了运行环境的一些信息。在安装了器件包后,很多配置文件Keil已经做好,程序员只需勾选相应的硬件配置即可,相当方便,这也是Keil与各大ARM核心厂家密切合作的结果。我们在这里只需勾选“CMSIS”的“CORE”和“Device”的“Startup”(这一点很容易理解,即程序包含最基本的内核与处理器的初始化两大要素),单击“OK”按钮,这时,程序的基本框架已经搭建完成。查看文档结构,如图1-11所示,展开“Target 1”,可以看到CMSIS和Device,这是运行环境勾选后自动生成的配置文件。展开“Device”,可以看到两个文件startup_stm32f407xx.s与system_stm32f4xx.c,这是STM32启动需要的初始化配置。读者可以双击打开这两个文件,查看里面的内容,但不要修改。后面的工作则是书写最重要的*.c文件。
图1-10 运行环境管理
图1-11 运行环境勾选后自动建立的文档
为了规范项目文件管理,用户编写的文档一般放到User文件夹中,所以我们在项目的文件夹下新建一个名为User的文件夹,在User文件夹下建立关键的main.c文件。
书写*.c文件有两种方法:一种是使用文本编辑器在外部进行文本编辑;另一种是使用Keil系统自带的文本编辑器进行编辑。外部编辑器建议使用Notepad++,它是一款非常有特色的编辑器开源软件,可以免费使用,支持绝大部分编程语言。当然Keil自带的编辑器也非常方便,本教材使用Keil自带的编辑器。
建立*.c文件,首先单击“File”→“New”菜单命令,让系统新建一个Text1文件,在文本编辑区输入程序,比如输入:
如图1-12所示,这时的文本一直呈黑色,说明编辑器无法识别这是一个C文件,它仅仅是个文本而已。再执行“File”→“Save As”命令,将它另存到项目文件夹下的User文件夹中,并命名为“main.c”,单击“保存”按钮,此时可以观察到程序已经变为彩色,说明编辑器已经认出这是一个C文件,可以识别程序的语句。如果发现程序没有变颜色,说明保存时并未保存为C文件,要重新保存。
建议在一开始就将新建的空文本文件另存为*.c文件,因为若不是*.c文件,编辑器无法辨认语句,也无法使用其强大的编辑功能。
图1-12 编写并保存main.c文件
文件保存完毕后只说明编辑好了一个程序,但是并未被加入我们的项目当中,此时还需将main.c加入项目当中。双击“Source Group 1”,在出现的选择文件窗口中选择刚刚保存的main.c添加,这时main.c已被加入项目中,如图1-13所示,“Source Group 1”下多了一个main.c文件。一定要确保编写的C文件加入项目中,这一点很容易被初学者疏忽。
图1-13 添加main.c文件(www.xing528.com)
此时,一个最简单项目的配置与程序已经完成,接下来我们要完成项目的编译,产生可以下载到微处理器的固件。在编译前需要配置一下编译环境,单击“Options for Target”按钮(魔术棒),如图1-14所示(或者在Project栏右击“Target 1”,也可以弹出选项),进入选项配置界面,如图1-15所示。
图1-14 选项配置界面
选项配置界面中的项目较多,左边第一个是“Device”选项卡,也就是处理器选择项。如果想变更处理器,可以在这一项中重新选择。选择“Target”选项卡,勾选“Use MicroLIB”,如图1-15所示,以便在日后编写串口驱动的时候可以使用printf函数。
图1-15 “Target”选项卡
选择“Output”选项卡,勾选“Create HEX File”(图1-16),即产生十六进制文件。此文件为ISP的下载文件,也就是单片机的机器码文件。当我们使用ISP方式下载程序时必须勾选此项,如果以SWD/JTAG方式下载,勾不勾选都没有影响。
图1-16 “Output”选项卡
选择“Debug”选项卡,选中“Use”单选按钮,再在下拉列表框中选择“ST-Link Debugger”,如图1-17所示。单击右边的“Settings”按钮,进入Debugger的设置项,如图1-18所示,可看到ST-LINK的信息,包括序列号以及版本号。如果驱动未安装好,或者仿真器未连接好,这些信息将无法显示。
图1-17 “Debug”选项卡
图1-18 Debugger设置项
单击“Flash Download”选项卡,可以查看使用仿真器进行程序下载的选项,如图1-19所示。这里显示的是下载对象的Flash大小以及烧录的一些设置,比如开发板的STM32F4xx芯片,配置的Flash容量为1MB。这里注意不要选择“Erase Full Chip”,因为若勾选,下载时会把整个Flash删除,非常耗时。可以勾选“Reset and Run”,这样在下载完程序后,使系统自动复位运行程序,而无须按下Reset键来重启。
图1-19 “Flash Download”选项卡
单击“确定”按钮完成设置,回到主界面进行编译,单击Built图标,如图1-20所示,或者在菜单栏选择“Project”→“Build Target”,或按快捷键【F7】进行编译。编译完成后观察下方的“Build Output”小窗口,如图1-20所示,查看编译过程信息。若代码中出现0Errors,说明编译成功,并且生成了1.axf文件。axf文件是ARM芯片使用的文件格式,它除了包含bin机器代码外,还包括输出给调试器的调试信息,如每行C语言所对应的源文件行号等,这也是仿真器使用的最基本的文件。
图1-20 编译程序
当编译成功后,最后一步工作是下载程序到开发板。如果采用ISP方式,需要接入串口,连接开发板的ISP引脚,再用ISP下载软件,载入HEX文件,下载到嵌入式系统,这里就不再详细阐述了。若使用仿真器,只需单击“Download”按钮,如图1-21所示,即可自动下载程序,下载完毕后可以看到下载信息。
图1-21 下载程序
这是一个最简单的程序,从项目建立到下载完成的步骤与其他项目都基本一样。细心的读者可以发现,开发板没有任何反应。原因很简单,从main.c的程序看,里面的内容仅仅是一个空的main函数,并没有任何语句,因此CPU在上电初始化之后,没有进行任何操作。这里只是为了让读者调试仿真器与开发板的连接,学会使用仿真器进行下载程序,了解如何编写STM32的项目程序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。