-第2页-0、友情提示《零死角玩转STM32》系列教程由初级篇、中级篇、高级篇、系统篇、四个部分组成,根据野火STM32开发板旧版教程升级而来,且经过重新深入编写,重新排版,更适合初学者,步步为营,从入门到精通,从裸奔到系统,让您零死角玩转STM32。M3的世界,与野火同行,乐意惬无边。另外,野火团队历时一年精心打造的《STM32库开发实战指南》将于今年10月份由机械工业出版社出版,该书的排版更适于纸质书本阅读以及更有利于查阅资料。内容上会给你带来更多的惊喜。是一本学习STM32必备的工具书。敬请期待!-第3页-1、如何编译和下载程序在拿到开发板之后,很多朋友都想先尝尝鲜,想自己烧写个程序到开发板上,看看效果。下面将演示如何将光盘里面自带的程序烧写到野火STM32开发板上。前提是你的电脑上已经安装了JLINK驱动和MDK开发环境,如果这一部没有完成,请参考《2、JLINK驱动安装与MDK环境搭建》。野火STM32开发板光盘上提供的代码都是已经编译好的,直接下载即可。1.1编译程序首先打开一个MDK工程,在野火STM32开发板光盘目录下:2-程序+教程\第一部分-库开发初级篇\5-野火M3-流水灯\USER,点击STM32-DEMO.uvproj,打开流水灯这个工程。在弹出的MDK界面中,我们可以看到左边的工具栏中有三个按钮,现在我们从左往右来介绍下这三个按钮的功能。第一个按钮:Translate就是翻译当下修改过的文件,说明白点就是检查下有没有语法错误,并不会去链接库文件,也不会生成可执行文件。第二个按钮:Build就是编译当下修改过的文件,它包含了语法检查,链接动态库文件,生成可执行文件。-第4页-第三个按钮:Rebuild重新编译整个工程,跟Build这个按钮实现的功能是一样的,但有所不同的是它编译的是整个工程的所有文件,耗时巨大。综上:当我们编辑好我们的程序之后,只需要用第二个Build按钮就可以,即方便又省时。第一个跟第三个按钮用的比较少。1.2下载程序野火STM32开发板有两种下载方式,JLINKV8下载和串口下载。要注意的是:1、JLINK下载的时候,开发板中的拨动开关BOOT0(在开发板边缘,靠近网口)即可以拨到VCC也可拨到GND,但在JLINK下载完程序后,必须将BOOT0拨到GND,好让程序从内部的存储器开始运行程序,所以在JLINK下载时昀保险的方法就是将BOOT0拨到GND那端。2、在用串口下载程序的时候,必须将BOOT0开发拨到VCC,在程序下载完后,然后将BOOT0开关拨到GND。1.2.1JLINK下载插上方口USB给开发板供电,再插上JLINK。点击MDK工具栏中的Load按钮就可将编译好的程序下载到开发板中。下载成功之后,程序就会自动运行。如果发现程序没有运行,则可按下开发板中的复位按键。-第5页-这里要注意的是:程序在烧写到开发板后是否自动运行,是可以在MDK开发环境:TargetOptions…-Debug-Setting-FalashDownLoad中设置的:如果没有设置为自动运行的话,我们需要在程序下载完毕之后进行手动复位,手动复位可以是按键复位和上电复位。还有一点要注意的是:在程序下载到开发板之后,开发板要供电,JLINK一端连开发板,另一端连PC,这样程序才能运行。有些用户在下载程序之后,第二次用的时候只是给开发板供电,JLNK的一端只连了开发板而没有连PC,这样-第6页-程序是不能工作的。要想只在供电的情况下要程序运行,只需把JLNK从开发板中拔掉即可,即只连电源,不接JLINK即可。1.2.2串口下载插上DC-5V电源给开发板供电,一定要是5V的电源,超过5V的电源则会烧掉开发板里头的485芯片,造成整板短路。如果没有DC-5V的电源,则可以用USB供电,野火STM32-V3开发板默认是用USB供电的。然后插上JLINK,插上自带的串口线(注意是两头都是母的交叉串口线)。将BOOT0开关拨到VCC。在这里我们用的串口下载软件是mcuisp,这个一个绿色的软件,可从网上自由下载,野火M3光盘目录下:3-安装软件\3-串口下载软件找到。点击mcuisp.exe,打开mcuisp,mcuisp是很智能的,只要开发板上电且连接好了串口,它就会自动搜索串口,野火STM32开发板用的是电脑主板后面的串口,这个串口都会被默认为是串口1。假如你是笔记本用户,用的是USB转串口,那么端口号可能就不是COM1,需要到我的电脑\管理\设备管理器\端口中查找,然后再修改。设置波特率为115200,选择要下载的程序。在开发板自带的例程中,可执行文件(hex文件)都在工程目录下的Output这个文件下。-第7页--第8页-然后点击开始编程按钮,如果程序下载成功后则会打印出下面红色框中的信息。程序下载成功之后,可是在开发板上看不到实验现象呀,怎么办?是不是出什么问题了呀?这是因为我们是通过串口将我们的程序烧写到flash里面去了,而我们想要从flash里面执行我们的程序的话,则需要将BOOT0开关拨到GND,然后按下我们的复位按键就可以看到实验想象了。-第9页-在我们点击开始编程按钮时,还会出现mcuisp一直处于连接的状态,导致程序下载不了,如下截图所示。解决的方法是只需我们按一下开发板中的复位按键即可。1.2.3串口下载与JLINK下载对比串口下载优点:速度快,下载稳定,特别是下载大型程序的时候。如果你的板子用的的MAX3232是国产的毛片的话,则没有这个优点:(。国产的MAX3232价格是0.3RMB,进口的是3.8RMB。野火STM32开发板用的MAX3232是3.8RMB的,在波特率设置到115200时,仍可稳定下载:)。缺点:不能够在线调试。JLINK下载优点:可以在线调试,开发一大利器,必不可少。有JLINK,犹如倚天屠龙在手:)。-第10页-缺点:下载大型程序时速度缓慢,还不稳定,非常蛋疼。但要注意的是调试的时候是不会出现这种情况的。所以,建议大家在购买开发板的时候,也买一个JLINK。-第11页-2、JLINK驱动安装与MDK环境搭建2.1JLINK驱动安装在用JLINK下载和调试程序之前,我们需要线在电脑上安装JLINK驱动,如果电脑上已经安装JLINK驱动,则可跳过这一步。在野火M3光盘目录下:3-安装软件\1-JLINKV8驱动点击Setup_JLinkARM_V428c.exe,完成JLINK驱动的安装。安装过程非常简单,这里将跳过。在安装完成后,我们将JLINK插接到电脑的USB口,即可在我的电脑\管理\设备管理器\通用串行总线控制器中看到一个J-Linkdriver。要注意的是在安装完JLINK驱动后,一定要将JLINK插接到电脑的USB口,否则在电脑的设备管理器中是查看不到J-Linkdriver的。当你把JLINK拔出电脑的USB口时候,J-Linkdriver就会消失。2.2MDK环境搭建在我们学习编写代码之前需要先要把MDK这个软件安装好,野火用的版本是V4.14,在安装完成之后可以在工具栏help-aboutuVision选项卡中查看到版本信息。MDK是一个集代码编辑,编译,链接和下载于一体的集成开发环境(KDE)。MDK这个名字我们可能不熟悉,但说到KEIL,学过51的朋友就再熟悉不过了。后来KEIL被ARM公司收购之后就改名为MDK了,所以学过51的朋友是很快就可以熟悉这个开发环境的。在野火M3光盘目录下:3-安装软件\2-MDK找到MDK414.exe,点击MDK414.exe,在弹出MDK安装界面后,按照如下步骤操作即可。-第12页-点击Next。把勾勾上,点击Next。-第13页-点击Next,默认安装在C:\keil目录下。在用户名中填入名字(可随便写,可空格),在邮件地址那里填入邮件地址(可随便写,可空格),点击Next。-第14页-正在安装,请耐心等待。点击Finish,安装完成。-第15页-此时就可在桌面看到MDK的快捷图标,如下所示:2.3和谐MDK安装完MDK开发环境后,在下载程序的时候会有40K的代码限制,我只需要和谐下即可搞定:)。在野火M3光盘目录下:3-安装软件\2-MDK找到KEIL_Lic.exe,点击KEIL_Lic.exe,在弹出的界面中的CID选项框中填入MDK的CID(MDK的CID在MDK开发环境中的菜单栏File\LicenseManagemant中获取到),在Target下拉框中选择ARM,然后点击Generate按钮,复制产生的CIDCode,然后回到MDK开发环境中的菜单栏File\LicenseManagemant中,把刚刚在注册机复制到的CIDCode粘贴到NewLicenseIDCode(LIC):框中,然后点击AddLIC,,点击close,大功告成:)。-第16页-3、如何新建工程模板3.1获取ST库源码在新建工程模板之前,我们首先需要获取到st库的源码,源码可从st的官方网站下载到,也可在野火M3光盘目录下:\2-程序+教程\第一部分-库开发初级篇找到,里面有V3.0.0和V3.5.0版本的库,这两个库的版本区别很小,几乎可以兼容。在这里我们以V3.5.0来新建我们的工程模板。3.2开始新建工程点击桌面UVision4图标,启动软件。如果是第一次使用的话会打开一个自带的工程文件,我们可以通过工具栏Project-CloseProject选项把它关掉。在工具栏Project-NewμVisionProject…新建我们的工程文件,我们将新建的工程文件保存在桌面的STM32-Template\USER文件夹下(先在电脑桌面上新建一个STM32-Template文件夹,在STM32-Template里面新建一个USER文件夹),文件名取为STM32-DEMO(英文DEMO的意思是例子),名字可以随便取,点击保存。-第17页-接下来的窗口是让我们选择公司跟芯片的型号,我们用的芯片是ST公司的STM32F103VET6,有64KSRAM,512KFlash,属于高集成度的芯片。按如下选择即可。-第18页-接下来的窗口问我们是否需要拷贝STM32的启动代码到工程文件中,这份启动代码在M3系列中都是适用的,一般情况下我们都点击是,但我们这里用的是ST的库,库文件里面也自带了这一份启动代码,所以为了保持库的完整性,我们就不需要开发环境为我们自带的启动代码了,稍后我们自己手动添加,这里我们点击否。此时我们的工程新建成功,如下图所示。但我们的工程中还没有任何文件,接下来我们需要在我们的工程中添加所需文件。在STM32-Template文件夹下,我们新建四个文件夹,分别为FWlib、CMSIS、Uotput、Listing。原先新建的USER用来存放工程文件和用户代码,包括主函数main.c。FWlib用来存放STM32库里面的inc和src这两个文件,这两个文件包含了芯片上的所有驱动。CMSIS用来存放库为我们自带的启动文件和一些M3-第19页-系列通用的文件。CMSIS里面存放的文件适合任何M3内核的单片机。CMSIS的缩写为:CortexMicrocontrollerSoftwareInterfaceStandard,是ARMCortex微控制器软件接口标准,是ARM公司为芯片厂商提供的一套通用的且独立于芯片厂商的处理器软件接口。Uotput用来保存软件编译后输出的文件,Listing用来存放一些编译过程中产生的文件,具体可不用了解。把野火M3光盘目录下:\3-ST库3.5.0源码\3.5.0\3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver的inc跟src这两个文件夹拷贝到STM32-Template\FWlib文件夹中。-第20页-把野火M3光盘目录下:\2-程序+教程\第一部分-库开发初级篇\3-ST库3.5.0源码\3.5