STM32开发环境使用Keil MDK进行,那怎么使用MDK建立一个工程呢?
首先应该下载到MDK官网:http://www.keil.com/arm/mdk.asp 下载最新版的MDK安装包,进入MDK官网,点击download按钮
点击下载MDK(可以看到香农这里的MDK版本是MDK520,大概有567M的样子)
下载完成之后点击安装:
选择安装目录,根据自己的需求定义,
随便填一些用户信息…
安装程序从当前开始安装,等待安装完成.
如果提示安装驱动,如果需要使用到ULink进行程序的烧录调试,则选择是,如果不需要选择否就可以了。
MDK安装完成界面如下所示,点击finnish:
弹出如下界面,取消选择show the dialog at startup,点击OK
此时在界面左方的树形列表中,ALL Devices列表下,只有一个ARM选项,等待程序刷新获取所有的设备列表:
展开设备STMicroelectronics选项,将会看到所有类型的STM32系列设备,根据需要选择对应系列的设备,笔者这里选择F103系列,然后可以在右边的packs下看到对应的驱动包,点击Install下载安装当前还未下载安装的驱动包,直到所有的选项驱动包安装完成,右边所有按钮变成灰色,关闭界面,此时在桌面上可以看到Keil MDK的快捷方式。
接下来我们就是要进行软件的破解了,在网上下载一个破解软件KEIL_Lic(网上有很多),以管理员身份打开我们刚刚装好的MDK软件,File–>License Management
复制右边CID编辑框中的字符串,然后打开下载好的KeiL_Lic
将刚刚复制的CID字符串粘贴到Keil_Lic的CID编辑框中,Target选择ARM,点击Generate按钮会在编辑框中生成注册码,我们将该注册码复制,并粘贴到License Management中的New License ID Code(LIC)中点击Add LIC,在下方的编辑框中提示添加成功,表示软件破解成功。
关闭Keil_Lic和License Management,此时我们已经完成了开发环境的搭建以及破解,
现在我们开始建立STM32工程,点击打开我们刚刚安装的Keil MDK软件,点击菜单栏Project选择New uVision Project
弹出对话框,选择存放工程的目录,并且在输入框内要建的工程名(指定工程名,不带后缀),这里我我输入Test,点击保存按钮将会弹出设备选择界面。
在此界面选择要使用的STM32主控型号,笔者用的是STM32F103C8T6,就在STMiroelectronics中选择STM32F1 Series ,接着选择STM32F103,展开就可以看到我使用的STM32F103C8T6,点击选择,会在界面较靠上位置的Device:显示到我们选择的设备型号,笔者附上的图片可以清晰的看到STM32F103C8字样,点击OK按钮,确认选择。
确认好要使用的设备后,会弹出Manage Run-Time Environment界面,这里需要配置我们使用STM32程序开发,需要用到的一些STM32外设功能,首先勾选几个最基本的选项,展开分支CMSIS勾选CORE和分支Device勾选Startup和GPIO,然后展开分支StdPeriph Driver在该分支下选择需要使用到的STM32外设,这里笔者以最常使用到的外设GPIO和USART为例子。
当我们选择了GPIO和USART后,在左下角的Validation Output会出现黄色的感叹号,提示是需要一些加载RCC驱动和Framework我们在列表中勾选上就好了,如果还有感叹号,直接双击列表上对应的第三级选项,可以在上方驱动列表中直接找到所需的设备驱动,勾选上就好,选择完成之后,点击OK,便会在指定目录下创建工程了。
我们可以在Project栏中看到我们创建好的工程目录,要编写STM32代码,我们需要新建一个文件,可以直接点击菜单栏File 选择New 或者 点击菜单栏File下类似白纸的图标(应该是File下第一个图标)或者直接按下快捷键CTRL + N便可以新建一个空白文档,默认该文档是在我们的编程区打开的。
我们新建完文件之后需要将文件保存到本地文件中,我们点击菜单栏File 选择Save as或者 点击菜单栏File下保存图标(应该是File下第三个图标)或者直接按下快捷键CTRL + S
接下来,我们需要选择保存文件路径,这里直接选择工程目录即可(如果不存放在工程目录下,需要在Options for Target 面板上选择C/C++选项卡,在Include Paths中将选择好的目录添加进去),接下来我们需要修改文件名,这里我更改为main.c(一定要带后缀)点击保存按钮,那么在我们工程目录下便会生成main.c文件。
虽然我们虽然新建并保存了可编写代码的文件,但是我们的工程目录下并没有这个文件,所以最后一步,我们需要将刚刚新建的文件添加到工程中去。右键Source Group1选择Add Existing Files to Group “Source Group1”,在工程目录下选择我们刚刚新建的main.c文件。
然后在双击main.c文件在其中添加测试代码:
#include "stm32f10x.h"
int main(void){
return 0;
}
编写完成后,点击编译可以看到Build Output可以看到0 Error,0 Warning表示编译成功
STM32烧录程序目前笔者知道的有三种:JLink ,Ulink和串口烧录,使用工具分别为:JLink,ULink以及USB转TTL线。
在安装MDK过程中,会有提示是否安装驱动,该驱动就为ULink驱动,如果选择是就不需要再安装驱动了,否则就需要自己手动下载驱动并安装,驱动安装完毕之后我们需要告诉我们的MDK我们使用的是什么烧录工具,右键Target目录选择Options for Target…..,在弹出的Options for target 选项卡中选择Debug选项,在其右上方的下拉框中选择ULink/ME Cortex Debugger 即是选择了ULink进行程序烧录。
这里需要注意的是ULink接上电脑之后不一定能被安装的MDK正确识别,我们点击下拉框右边的Setting按钮将会弹出Cortex-M Target Driver Setup界面,在该界面下,如果在JTAG Device Chain区域显示No ULink Device Found 或者就是一片空白都表示我们的MDK没有识别到你已经接到电脑上的ULink,此时就需要你查找一下ULink端的原因了。
JLink驱动并没有集成在MDK安装程序中所以一定需要我们手动下载Jlink驱动并安装,驱动安装完毕之后我们需要告诉我们的MDK我们使用的是什么烧录工具,右键Target目录选择Options for Target…..,在弹出的Options for target 选项卡中选择Debug选项,在其右上方的下拉框中选择JLink/J-TRACE Cortex 即是选择了JLink进行程序烧录。
同样的,需要注意的是JLink接上电脑之后不一定能被安装的MDK正确识别,我们点击下拉框右边的Setting按钮将会弹出Cortex JLink/JTrace Target Driver Setup界面,在该界面下,如果在JTAG Device Chain区域显示Cannot redad JLink version number 或者就是一片空白都表示我们的MDK没有识别到你已经接到电脑上的JLink,如果右边J-Link / J-Trace Adaper下方的ort下拉框可选,选择成为另外一个试试(原本JTAG选为SWD,原本SWD选为JTAG),如果可以识别就代表可以进行程序烧录了。
我们使用串口烧录程序,使用USB转TTL线,USB转TTL驱动根据我们内部的转换芯片安装相应的驱动,常见的有一下几种:CH340,PL2303,FTDI,CP210x等,驱动完成之后,右键Target目录选择Options for Target…..,在弹出的Options for target 选项卡中选择Output选项,勾选上Create Hex File复选框,这样我们在编译代码时,便会在工程目录下生成Hex文件,我们串口烧录程序其实就是使用外部工具将该Hex文件中的内容,烧录到STM32 FLASH中去。需要使用到的烧录软件可以使用JLink 官方提供的串口烧录软件,也可以使用 mcuisp USB一键下载工具也叫作FlyMcu进行烧录。
使用FlyMCU时,首先需要指定软件使用的串口号和波特率,在进行程序烧录之前必须设置我们STM32的烧录模式,需要将STM32 BOOT0设置为高电平,BOOT1设置为低电平,然后复位STM32,在FlyMcu中首先选择好要下载的HEX文件(编译生成的HEX文件在工程目录下生成),然后选择STMISP选项卡,点击开始编程按钮,便可以进行程序烧录了。